Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม
การเขียนโปรแกรม
  1. Asymptotic Notations ทั้ง 5 แบบ: O, o, Ω, ω, Θ

    Asymptotic Notations (สัญกรณ์渐近) ใช้แทนความซับซ้อนอัลกอริทึม มี 3 สัญกรณ์หลัก และอีก 2 แบบเสริม Big-Oh Notation (O) - ขอบเขตบน Big-Oh (O) ให้ขอบเขตบน (Upper Bound) ของฟังก์ชัน f(n) ภายในตัวคูณคงที่ Little-o Notation (o) - ขอบเขตบนไม่แน่น Little-o (o) ใช้บอกขอบเขตบนที่ไม่แน่น (Loose Upper Bound) ขอ

  2. Big-Oh Notation (O): ขอบเขตบนของฟังก์ชัน

    Asymptotic Notations (สัญกรณ์渐近) ใช้แทนความซับซ้อนอัลกอริทึม มี 3 สัญกรณ์หลัก Big-Oh Notation (O) - ขอบเขตบน Big-Oh (O) ให้ขอบเขตบน (Upper Bound) ของฟังก์ชัน f(n) ภายในตัวคูณคงที่ f(n) = O(g(n)) หากมีค่าคงที่บวก n₀ และ c ทำให้ทางขวาของ n₀ f(n) อยู่บนหรือต่ำกว่า c·g(n) เสมอ O(g(n)) = { f(n) : มีค่าค

  3. Big-Omega (Ω) และ Big-Theta (Θ) Notation: ขอบเขตล่างและขอบเขตแน่น

    Asymptotic Notations (สัญกรณ์渐近) ใช้แทนความซับซ้อนอัลกอริทึมสำหรับการวิเคราะห์渐近 มี 3 สัญกรณ์หลัก Big-Omega Notation (Ω) - ขอบเขตล่าง Big-Omega (Ω) ให้ขอบเขตล่าง (Lower Bound) ของฟังก์ชัน f(n) ภายในตัวคูณคงที่ f(n) = Ω(g(n)) หากมีค่าคงที่บวก n₀ และ c ทำให้ทางขวาของ n₀ f(n) อยู่บนหรือสูงกว่า c·g(n)

  4. Little-o Notation (สัญกรณ์ Little-o): ขอบเขตบนที่ไม่แน่น

    Little-o Notation คืออะไร? นอกจาก Big-O, Big-Omega, Big-Theta แล้ว ยังมี Little-o Notation ใช้บอกขอบเขตบนที่ ไม่แน่น (Not Tight) หรือ Loose Upper Bound ของ f(n) 0 ความสัมพันธ์ทางคณิตศาสตร์ f(n) = o(g(n)) หมายถึง: ตัวอย่าง ถ้า f(n) = n² และ g(n) = n³ ตรวจสอบว่า f(n) = o(g(n)) หรือไม่ ผลลัพธ์คือ

  5. Amortized Complexity (ความซับซ้อนแบบ Amortized): ทฤษฎีและตัวอย่าง Dynamic Array

    Amortized Analysis (การวิเคราะห์ Amortized) ใช้เมื่อการดำเนินการบางครั้งช้ามาก แต่ส่วนใหญ่ที่ทำบ่อยเร็ว โครงสร้างข้อมูลที่ต้องการ: Hash Tables, Disjoint Sets ใน Hash Table การค้นหาส่วนใหญ่ O(1) แต่บางครั้ง O(n) เมื่อเกิด Collision ต้องใช้ O(n) แก้ไข Aggregate Method (วิธีรวมค่า) หาค่าใช้จ่ายรวม สำห

  6. Graph and its Representations (กราฟและการแสดงผล): Adjacency Matrix, List, Edge List

    Graph (กราฟ) เป็นโครงสร้างข้อมูลแบบไม่เชิงเส้น แสดงข้อมูลด้วยโหนด (Nodes) และความสัมพันธ์ด้วยเส้นเชื่อม (Edges) กราฟ G มี 2 ส่วน: Vertices (V) และ Edges (E) 記法 G(V,E) ในกราฟนี้มี 5 โหนด 5 เส้นเชื่อม แบบมีทิศทาง (Directed) ตัวอย่างเส้นเชื่อม B-D แหล่ง (Source) คือ B ปลายทาง (Destination) คือ D เดินท

  7. Depth First Search (DFS) for a Graph: อัลกอริทึม, โค้ด และตัวอย่าง

    Depth First Search (DFS) เป็นอัลกอริทึมท่องสำรวจกราฟ ให้โหนดเริ่มต้น เมื่อพบโหนดติดกัน จะไปที่โหนดติดกันนั้นก่อน และท่องต่อในลักษณะเดียวกัน DFS ลงลึก (Depth) มากที่สุดเท่าที่จะไปได้ แล้วค่อย Backtrack กลับมาหาเส้นทางใหม่ การ Implement แบบ Iterative ต้องใช้ Stack แบบ Recursive ไม่ต้องการ Stack ภายนอ

  8. Breadth First Search (BFS) for a Graph: อัลกอริทึม, โค้ด และตัวอย่าง

    Breadth First Search (BFS) เป็นอัลกอริทึมการท่องสำรวจ (Traversal) ใช้เยี่ยมชมโหนดทั้งหมดของกราฟ เลือกโหนดหนึ่ง แล้วเยี่ยมชมโหนดติดกัน (Adjacent) ทีละตัว หลังครบทุกโหนดติดกัน จะไปต่อที่โหนดถัดไปและตรวจสอบโหนดติดกันของมันอีกครั้ง การนำไปใช้ต้องใช้โครงสร้างข้อมูล Queue โหนดติดกันทั้งหมดถูกเพิ่มเข้า Qu

  9. Introduction to Divide & Conquer Algorithms (บทนำ Divide and Conquer): แนวคิดและโจทย์

    Divide and Conquer (แบ่งและเอาชนะ) เป็นหนึ่งในพาราดายม์อัลกอริทึม มี 3 ขั้นตอนหลัก: Divide (แบ่ง): แบ่งปัญหาเป็นย่อยปัญหาขนาดเล็กลงไป ประเภทเดียวกัน Conquer (เอาชนะ): แก้ย่อยปัญหาแบบ Recursive Combine (รวม): รวมคำตอบของย่อยปัญหาเพื่อได้คำตอบสุดท้าย ในส่วนนี้จะครอบคลุม: Closest Pair Point Problem

  10. Introduction to Backtracking Algorithms (บทนำ Backtracking): เทคนิคการแก้ปัญหาแบบทวนย้อน

    Backtracking (การทวนย้อน) เป็นเทคนิคอัลกอริทึมแก้ปัญหาแบบเพิ่มเติม (Incremental) ใช้แนวทาง Recursive (เรียกซ้ำ) Backtracking ใช้หาทุกชุดคำตอบที่เป็นไปได้สำหรับปัญหา Optimization ในส่วนนี้จะครอบคลุม: Hamiltonian Cycle M-Coloring Problem N Queen Problem Rat in Maze Problem Cryptarithmetic Puzzle Sub

  11. Introduction to Miscellaneous Problems (บทนำโจทย์หลากหลาย): โจทย์สุ่มที่น่าสนใจ

    เราได้เห็นโจทย์ต่างๆ ในส่วนต่างๆ มีโจทย์บางอย่างที่ไม่ได้จัดหมวดหมู่ ในส่วนนี้จะดูโจทย์สุ่มบางอย่าง ในส่วนนี้จะครอบคลุม: Adding base n numbers Babylonian method to find the square root Factorial of a large number Check if a given point lies inside a Polygon Check Perfect Square or Not Check if giv

  12. Introduction to Pattern Searching Algorithms (บทนำอัลกอริทึมค้นหาแพทเทิร์น)

    Pattern Searching Algorithms (อัลกอริทึมค้นหาแพทเทิร์น) ใช้หาแพทเทิร์นหรือ substring จากสตริงขนาดใหญ่ มีอัลกอริทึมหลายแบบ เป้าหลักคือลด Time Complexity วิธีดั้งเดิมอาจใช้เวลานานสำหรับข้อความยาว จะเห็นอัลกอริทึมต่างๆ เพื่อประสิทธิภาพ Pattern Matching ที่ดีขึ้น ในส่วนนี้จะครอบคลุม: Aho-Corasick Algo

  13. Introduction to Searching Algorithms (บทนำอัลกอริทึมการค้นหา): ประเภทและเทคนิค

    Searching Algorithms (อัลกอริทึมการค้นหา) ใช้ค้นหาหนึ่งหรือหลายสมาชิกจากชุดข้อมูล (Dataset) ใช้กับโครงสร้างข้อมูลเฉพาะ การค้นหาอาจเป็นแบบ Sequential (ลำดับ) หรือไม่ ถ้าข้อมูลในชุดสุ่ม ต้องใช้ Sequential Search มิฉะนั้นใช้เทคนิคอื่นๆ เพื่อลดความซับซ้อน ในส่วนนี้จะครอบคลุม: Binary Search Exponential

  14. Introduction to Sorting Techniques (บทนำเทคนิคการจัดเรียง): อัลกอริทึมและประเภท

    Sorting (การจัดเรียง) หมายถึงการจัดเรียงข้อมูลในรูปแบบเฉพาะ อัลกอริทึมการจัดเรียงระบุวิธีจัดเรียงข้อมูลในลำดับที่ต้องการ ลำดับที่พบบ่อยคือตัวเลข (Numerical) หรือลำดับพจนานุกรม (Lexicographical) ความสำคัญของการจัดเรียง: การค้นหาข้อมูล (Searching) สามารถเพิ่มประสิทธิภาพได้สูงมาก หากข้อมูลจัดเก็บแบบเรี

  15. Introduction to Greedy Algorithms (บทนำ Greedy Algorithms): หลักการและโจทย์

    Greedy Algorithm (อัลกอริทึมโลภ) ออกแบบเพื่อหาคำตอบเหมาะสม (Optimal Solution) สำหรับปัญหาที่กำหนด ในแนวทาง Greedy การตัดสินใจทำจากโดเมนของคำตอบที่มีอยู่ เลือกคำตอบที่ดูเหมาะสมที่สุดในขณะนั้น (Locally Optimal) Greely Algorithm พยายามหาคำตอบเหมาะสมในท้องถิ่น ซึ่งอาจนำไปสู่คำตอบเหมาะสมทั่วไป (Globally

  16. Introduction to Dynamic Programming (บทนำ Dynamic Programming): หลักการและรายการโจทย์

    Dynamic Programming (DP) เป็นหนึ่งในพาราดายม์ของอัลกอริทึม แบ่งปัญหาเป็นย่อยปัญหา (Sub-problems) และเก็บผลลัพธ์ของย่อยปัญหาไว้เพื่อนำกลับมาใช้ใหม่ ช่วยลดเวลาคำนวณ มี 2 ประเภทของเทคนิค DP: Overlapping Subproblem (ย่อยปัญหาทับซ้อน) Optimal Substructure (โครงสร้างย่อยที่เหมาะสม) ในส่วนนี้จะครอบคลุมโ

  17. Introduction to Graph Algorithms (บทนำอัลกอริทึมกราฟ): รายการหัวข้อครบถ้วน

    Graph (กราฟ) เป็นโครงสร้างข้อมูลแบบไม่เชิงเส้น (Non-linear) ประกอบด้วยโหนด (Nodes) จำนวนจำกัด และชุดของเส้นเชื่อม (Edges) ที่เชื่อมคู่ของโหนด กราฟใช้แก้ปัญหาจริง เช่น การแสดงเครือข่าย (Networks) ในโซเชียลเน็ตเวิร์กต่างๆ ในส่วนนี้จะครอบคลุมหัวข้อต่อไปนี้: Bi-Connected Graph Checking Breadth First S

  18. Introduction to Analysis of Algorithms (บทนำการวิเคราะห์อัลกอริทึม)

    ในการวิเคราะห์อัลกอริทึมทางทฤษฎี มักประมาณความซับซ้อนในเชิง渐近 (Asymptotic Sense) คือประมาณฟังก์ชันความซับซ้อนสำหรับอินพุตขนาดใหญ่ bấtได้ คำว่า analysis of algorithms ถูกสร้างขึ้นโดย Donald Knuth การวิเคราะห์อัลกอริทึมเป็นส่วนสำคัญของทฤษฎีความซับซ้อนทางคำนวณ ให้การประมาณทฤษฎีสำหรับทรัพยากรที่จำเป็น อ

  19. Magic Square (เมจิกสแควร์): การสร้างเมทริกซ์เวทมนตร์แบบคี่

    Magic Square (เมจิกสแควร์) คือเมทริกซ์สี่เหลี่ยมจัตุรัสที่ลำดับ (Order) เป็นเลขคี่ และผลรวมของสมาชิกในแต่ละแถว แต่ละคอลัมน์ และแต่ละเส้นทแยงมุม มีค่าเท่ากัน ผลรวมแต่ละแถว/คอลัมน์/เส้นทแยงมุม หาได้จากสูตร: n(n² + 1)/2 กติกาการสร้าง Magic Square เริ่มจากคอลัมน์กลางของแถวแรก วางตัวเลข 1 แล้วไปมุมซ้า

  20. Shuffle Array Contents (การสุ่มลำดับอาร์เรย์): อัลกอริทึม Fisher-Yates

    อัลกอริทึมนี้รับอาร์เรย์และสุ่มลำดับสมาชิก (Shuffle) สร้างการเรียงสับเปลี่ยนแบบสุ่ม (Random Permutation) วิธีแก้: สลับสมาชิกเริ่มจากดัชนีสุดท้ายไปยังดัชนีสุ่มในอาร์เรย์ Input และ Output Input: อาร์เรย์จำนวนเต็ม: {1, 2, 3, 4, 5, 6, 7, 8} Output: ผลลัพธ์สุ่ม: 3 4 7 2 6 1 5 8 (แต่ละครั้งรันผลลัพธ์ต่าง

Total 1490 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:63/75  20-คอมพิวเตอร์/Page Goto:1 57 58 59 60 61 62 63 64 65 66 67 68 69