เลือกหัวข้อจากแถบเมนูด้านซ้าย (กรณีหน้าจอเล็กเมนูจะหดกลายเป็นสัญลักษณ์สามขีดอยู่ในแถบเมนูด้านบน) หรือใส่คำค้นหาที่ช่องด้านล่างนี้ เพื่อค้นหาหัวข้อบทความหรือ Tutorial เกี่ยวกับเรื่อง shortest_path ที่ต้องการ
Dijkstra Algorithm ตั้งชื่อตามผู้พัฒนา, Edsger W. Dijkstra, สร้างขึ้นเพื่อคำนวณหาเส้นทางที่สั้นที่สุดระหว่างจุดเริ่มต้นและจุดปลายทางในกราฟที่มีน้ำหนักของเส้นเชื่อมระหว่างโหนด (การทำงานของมันจะกำหนดไว้ในกราฟที่มีน้ำหนักไม่เป็นลบเท่านั้น) โดยใช้กลไกของการอัพเดตน้ำหนักเส้นทางและการเลือกเส้นทางที่ดีที่สุดในแต่ละขั้นตอนการวนซ้ำ...
Read More →ในโลกของการเขียนโปรแกรม เรามักจะพบกับปัญหาต่างๆ ที่ต้องการคำตอบหรือวิธีการแก้ปัญหาที่ชาญฉลาด Bellman-Ford Algorithm คือหนึ่งในเครื่องมือที่ช่วยแก้ไขปัญหาสำคัญของโครงข่าย นั่นก็คือ การหาเส้นทางที่สั้นที่สุด แต่เมื่อเราหลุดพ้นจากแบบแผนของการหาเส้นทางที่สั้นที่สุดด้วย Dijkstra Algorithm ที่ให้คำตอบเมื่อเส้นทางความยาวเป็นบวกเสมอ Bellman-Ford ก้าวเข้ามาด้วยความสามารถที่จะหาเส้นทางที่สั้นที่สุดได้แม้ในกรณีที่น้ำหนักของเส้นทางมีค่าเป็นลบ ซึ่งเป็นข้อดีใหญ่หลวงของมันเลยทีเดียว อย่างไรก็ตาม ความสามารถนี้ก...
Read More →การเขียนโปรแกรมไม่ได้มีแค่เพียงการสร้างแอพพลิเคชันหรือการพัฒนาเว็บไซต์เท่านั้น แต่ยังเกี่ยวข้องกับการค้นหาแนวทางในการแก้ไขปัญหาหนักหน่วงทางการคำนวณ หนึ่งในวิธีการที่ทรงพลังและน่าตื่นเต้นที่ได้รับความนิยมก็คือ ?Dynamic Programming? หรือ DP ในภาษา C....
Read More →การทำความเข้าใจโครงสร้างข้อมูลและอัลกอริทึมนั้นมีความสำคัญอย่างยิ่งในโลกของการเขียนโปรแกรม อัลกอริทึมหนึ่งที่มีความสำคัญคือ Breadth First Search (BFS) ซึ่งเป็นเทคนิคการเดินทางผ่านกราฟ (graph) หรือต้นไม้ (tree) โดยการเยี่ยมชมโหนดทีละชั้น จากโหนดเริ่มต้นไปยังโหนดที่อยู่ใกล้ที่สุดก่อน และจากนั้นถึงโหนดที่ไกลออกไป ซึ่งเป็นเทคนิคพื้นฐานที่ถูกใช้ในหลายสถานการณ์ เช่น หาสั้นที่สุดในเกมบอร์ด, การวิเคราะห์เครือข่าย, หาระดับของโหนดในกราฟ, และอื่นๆ...
Read More →ใครที่สนใจเรื่องการค้นหาเส้นทางในแผนที่หรือกราฟ คงคุ้นเคยกับปัญหา ?หาเส้นทางที่สั้นที่สุด? ซึ่งเป็นปัญหาพื้นฐานกันอยู่แล้ว ในบทความนี้ เราจะมาพูดถึง Dijkstra Algorithm ซึ่งเป็นหนึ่งในอัลกอริทึมที่นิยมใช้สำหรับการแก้ไขปัญหานี้ในโดเมนของกราฟที่มีน้ำหนักเชิงบวก...
Read More →คำว่า Greedy ในแง่มุมของอัลกอริทึม (Algorithm) หมายถึงการทำการเลือกที่ดูเหมือนดีที่สุดในขณะนั้นๆ โดยไม่คำนึงถึงผลลัพธ์ระยะยาวที่อาจเกิดขึ้นจากการเลือกนั้น หรือกล่าวอีกนัยหนึ่งคือการหาคำตอบที่ดูดีที่สุดทีละขั้นตอนโดยไม่ย้อนกลับไปพิจารณาการตัดสินใจที่ผ่านมา...
Read More →โลกของการเขียนโปรแกรมเต็มไปด้วยปัญหาที่ท้าทาย และหนึ่งในนั้นคือ การหาเส้นทางที่สั้นที่สุด ไม่ว่าจะเป็นในด้านของการจัดส่งสินค้า, การค้นหาเส้นทางในเครือข่ายคอมพิวเตอร์, หรือแม้แต่การวิเคราะห์ตลาดการเงิน หนึ่งใน Algorithm ที่ถูกนำมาใช้แก้ปัญหาเหล่านี้คือ Bellman Ford Algorithm ลองมาทำความรู้จักกับ Algorithm นี้พร้อมด้วยตัวอย่างโค้ดในภาษา Java และพิจารณาข้อดีข้อเสียของมันกัน...
Read More →ถ้าพูดถึงการค้นหาข้อมูลในโครงสร้างข้อมูลเช่นกราฟหรือต้นไม้ (tree) วิธีการค้นหาแบบหนึ่งที่มีประสิทธิภาพและเป็นที่นิยมกันอย่างมากคือการค้นหาแบบกว้างหรือที่เรียกว่า Breadth-First Search (BFS) ในบทความนี้เราจะไปทำความรู้จักกับ BFS และดูตัวอย่างการใช้งานในภาษา Java พร้อมทั้งวิเคราะห์ความซับซ้อนของอัลกอริทึมนี้ และตัวอย่างการใช้งานในโลกจริง ตลอดจนข้อดีและข้อเสียของมัน...
Read More →เมื่อพูดถึงการค้นหาเส้นทางสั้นที่สุดในวิชาการที่ซับซ้อนอย่าง Computer Science ไม่มีคำตอบใดที่แสนจะชัดเจนและเป็นที่เรียกร้องไปกว่า Dijkstra Algorithm นี่คืออัลกอริธึมที่ได้ประดิษฐ์ขึ้นโดย Edsger W. Dijkstra ในปี 1956 ซึ่งวิเศษซึ้งในการแก้ปัญหาการค้นหาเส้นทางที่สั้นที่สุดในกราฟที่มีน้ำหนักไม่เป็นลบ วันนี้เราจะมาสำรวจหัวใจของอัลกอริธึมนี้โดยการใช้ภาษา C# เป็นสื่อกลางในการเรียนรู้ พร้อมทั้งตระหนักรู้ถึงทั้งข้อดีและข้อเสียที่แฝงอยู่...
Read More →ในโลกของโปรแกรมมิ่ง การหาเส้นทางที่สั้นที่สุด (Shortest Path Problem) เป็นหนึ่งในปริศนาที่นักพัฒนาซอฟต์แวร์และนักวิทยาศาสตร์ข้อมูลต้องเผชิญอยู่เป็นประจำ มีอลิตธอร์ริทึมต่างๆ ถูกคิดค้นขึ้นเพื่อเอาชนะความท้าทายนี้ และหนึ่งในนั้นคือ Bellman-Ford Algorithm ซึ่งเป็นเครื่องมือที่มีความสามารถในการตรวจจับวงจรลบ (Negative Cycles) และหาเส้นทางที่สั้นที่สุดแม้ในกราฟที่มีน้ำหนักเป็นลบก็ตาม...
Read More →การค้นหาเส้นทางที่สั้นที่สุด (shortest path) เป็นหัวใจหลักของการวางแผนเส้นทาง โดยที่ Dijkstra Algorithm เป็นหนึ่งในแอลกอริธึมที่โด่งดัง และได้รับการยอมรับสำหรับการแก้ไขปัญหาชนิดนี้ ในโลกแห่งการเขียนโปรแกรม, Dijkstra Algorithm ได้ถูกนำมาใช้ในหลากหลายภาษา และหนึ่งในนั้นคือ VB.NET ซึ่งเป็นภาษาที่เน้นความง่ายในการอ่านและการใช้งานสำหรับผู้เรียนรู้ใหม่...
Read More →เมื่อพูดถึงแก่นของการแก้ปัญหาด้วยวิธีการคำนวณทางคอมพิวเตอร์ หนึ่งในอัลกอริทึมที่สำคัญที่ไม่สามารถมองข้ามไปได้ คือ Bellman Ford Algorithm ซึ่งเป็นเครื่องมือที่ทรงพลังสำหรับการหาเส้นทางที่สั้นที่สุดในกราฟ (Shortest Path Problem) ที่มีน้ำหนักบนขอบอาจเป็นลบได้ ไปยังโจทย์ที่ยากลำบากหลากหลาย ในบทความนี้ เราจะพาไปสำรวจเส้นทางของอัลกอริทึมนี้ด้วยภาษา VB.NET พร้อมวิเคราะห์ข้อดีข้อเสียและการประยุกต์ใช้ในโลกจริง...
Read More →Algorithm หรือ อัลกอริทึม เป็นแนวทางแก้ไขปัญหาด้วยขั้นตอนที่ชัดเจนซึ่งใช้ในการค้นหาหรือจัดเรียงข้อมูลในวิชาคอมพิวเตอร์ หนึ่งใน Algorithm ที่มีชื่อเสียงและมีประโยชน์อย่างมากในการเข้าถึงข้อมูลอย่างมีระบบคือ Breadth First Search หรือ BFS โดยมีลักษณะคร่าวๆ คือการค้นหาหรือเที่ยวไปในกราฟ (Graph) โดยการใช้การค้นหาแบบกวาดทีละชั้น (Level by Level) ซึ่งการใช้งาน BFS นั้น สามารถนำไปใช้ในหลายสถานการณ์ เช่น การหาความสัมพันธ์ระหว่างรายการต่างๆ หรือการหาลำดับที่สั้นที่สุดระหว่างจุด A กับจุด B ในเครือข่าย นอกจา...
Read More →ในโลกของวิทยาการคอมพิวเตอร์และการเขียนโปรแกรม อัลกอริทึมถือเป็นหัวใจหลักที่ช่วยพัฒนาโปรแกรมให้สมบูรณ์แบบและคุณภาพสูง หนึ่งในอัลกอริทึมที่โดดเด่นและมีประโยชน์อย่างมากคือ Dijkstra Algorithm หรืออัลกอริทึมของดิจิตรา ซึ่งถูกพัฒนาขึ้นโดยวิศวกรชาวดัตช์ Edsger W. Dijkstra ในปี 1956 วันนี้เราจะนำเสนอข้อมูลเกี่ยวกับอัลกอริทึมนี้ในภาษา Python พร้อมทั้งยกตัวอย่างการใช้งานในสถานการณ์จริงและวิเคราะห์ข้อดีข้อเสียที่น่าสนใจ...
Read More →การเขียนโปรแกรมนั้นก็คือการแก้ปัญหาต่างๆ ผ่านการสั่งงานคอมพิวเตอร์ด้วยภาษาที่เครื่องจักรสามารถเข้าใจได้ หนึ่งในทักษะเชิงกลยุทธ์ที่สำคัญทางด้านการเขียนโปรแกรมคือการจัดการกับปัญหาการซ้ำซ้อนของคำนวณซึ่งสามารถคร่าชีวิตประสิทธิภาพของโปรแกรมได้ เทคนิคที่ช่วยในเรื่องนี้คือ Memorization หรือการจำผลการคำนวณไว้....
Read More →ในโลกแห่งการคอมพิวเตอร์ หนึ่งในกุญแจสำคัญที่ทำให้เราสามารถแก้ไขปัญหาที่ซับซ้อนได้คือ Algorithms หรือขั้นตอนวิธีการในการคำนวณแก้ไขปัญหา Dijkstra Algorithm เป็นหนึ่งในอัลกอริทึมที่มีความสำคัญซึ่งใช้ในการหาเส้นทางที่สั้นที่สุดจากจุดเริ่มต้นไปยังจุดหมายปลายทางที่กำหนด และในบทความนี้เราจะอธิบายว่า Algorithm นี้คืออะไร ใช้แก้ไขปัญหาอะไร พร้อมทั้งยกตัวอย่างการใช้งานด้วยภาษา Golang และการนำไปใช้ในสถานการณ์จริง รวมถึงวิเคราะห์ประสิทธิภาพและข้อจำกัดของมันด้วย...
Read More →ในโลกการโปรแกรมมิ่ง มีตัวช่วยมากมายที่พัฒนาขึ้นเพื่อแก้ไขปัญหาที่ซับซ้อนและหลากหลาย หนึ่งในนั้นคือ Bellman-Ford Algorithm, ที่ถูกพูดถึงอย่างกว้างขวางในหมวดของ Graph Theory และแน่นอน, ในการเรียนที่ EPT นิสิตจะได้พบกับความท้าทายในการทำความเข้าใจอัลกอริทึมนี้ตลอดจนได้มือปฏิบัติจริงด้วยภาษา Golang หนึ่งในภาษาโปรแกรมมิ่งที่มีความสามารถสูงและน่าสนใจมากขึ้นในเวลานี้...
Read More →Breadth First Search เป็นรูปแบบหนึ่งของการเดินทางผ่าน (traversal algorithm) ที่เริ่มจากโหนดราก (root node) และสำรวจทุกโหนดในทุกระดับก่อนที่จะขยับไปยังระดับถัดไป มันใช้เทคนิคของ Queue เพื่อจัดการกับการอ่านโหนดที่ร้อนเย็นตามลำดับ Breadth First Search เป็นวิธีที่ดีในการค้นหาเส้นทางหรือเพลินเพลินวัตถุจากต้นไม้หรือกราฟที่เกี่ยวข้องกับการหา Shortest Path หรือการทำ Graph Connectivity...
Read More →Dijkstra Algorithm เป็นหนึ่งในอัลกอริธึมที่ใช้ในการคำนวณหาเส้นทางที่สั้นที่สุดในกราฟที่มีน้ำหนักบนแต่ละขอบ (edge) และไม่มีขอบที่มีน้ำหนักเป็นลบ อัลกอริธึมนี้ถูกพัฒนาโดยนักวิทยาศาสตร์ชาวดัตช์ Edsger W. Dijkstra ในปี 1956 ซึ่งเป็นหัวใจสำคัญในการทำงานของอัลกอริทึมการกำหนดเส้นทางในเครือข่ายคอมพิวเตอร์ และหลากหลายสาขาซอฟต์แวร์การนำทาง...
Read More →Bellman Ford Algorithm เป็นอัลกอริธึมที่ถูกออกแบบมาเพื่อค้นหาเส้นทางที่สั้นที่สุด (shortest path) จากจุดเริ่มต้นไปยังจุดหมายอื่นๆ ในกราฟ ซึ่งสามารถจัดการกับน้ำหนักริมที่เป็นลบได้ นอกจากนี้ยังสามารถตรวจสอบวงหรี (negative cycles) ซึ่งหมายความว่าสามารถบอกได้ว่ากราฟของเรามีเส้นทางที่ทำให้รวมค่าน้ำหนักแล้วเป็นลบหรือไม่...
Read More →การเดินทางจากจุด A ไปยังจุด B อาจดูเหมือนเรื่องง่ายสำหรับเราในชีวิตจริง แต่ในโลกของอัลกอริทึมและการคำนวณทางคอมพิวเตอร์ หนึ่งในปัญหาหลักที่นักวิจัยและโปรแกรมเมอร์พยายามที่จะแก้ไขคือการค้นหาเส้นทางที่สั้นที่สุดระหว่างจุดต่างๆ หนึ่งในอัลกอริทึมที่มีความสำคัญและเป็นที่รู้จักกันดีคือ Bellman-Ford Algorithm ซึ่งเราจะมาทำความเข้าใจกันในบทความนี้ โดยผมจะใช้ภาษา Perl เพื่ออธิบายและยกตัวอย่างการใช้งานที่น่าตื่นเต้นสำหรับคุณ...
Read More →การเขียนโปรแกรมเพื่อแก้ไขปัญหาทางคณิตศาสตร์หรือการคำนวณในโลกปัจจุบัน นับเป็นทักษะที่พึงประสงค์สำหรับนักพัฒนาซอฟต์แวร์ทุกคน หนึ่งในอัลกอริทึมที่มีประสิทธิภาพและดำเนินการได้ง่ายคือ Greedy Algorithm (อัลกอริทึมตะกละ) วันนี้เราจะมาพูดถึงคุณสมบัติพิเศษของอัลกอริทึมนี้ และทบทวนวิธีการเขียนโปรแกรมด้วยภาษา Perl เพื่อแก้ไขปัญหาโดยใช้อัลกอริทึมตะกละ...
Read More →ในโลกของการคำนวณ, การค้นหาข้อมูลคือหัวใจสำคัญที่ทำให้เราสามารถสกัดเนื้อหาที่จำเป็นออกจากมหาสมุทรของข้อมูลได้ องค์ประกอบหนึ่งที่เป็นกุญแจสำคัญในการค้นหาข้อมูลในโครงสร้างของกราฟคือ Breadth First Search (BFS) ซึ่งเป็น Algorithm ในการเดินผ่าน (Traversal) ทุกโหนดในกราฟหรือต้นไม้โดยใช้วิธีการเลเวลต่อเลเวล ในบทความนี้ เราจะศึกษาถึงความหมาย, การใช้งาน, ตัวอย่างโค้ดเขียนด้วย Perl, usecase ในโลกจริง และวิเคราะห์ความซับซ้อน รวมทั้งข้อดีข้อเสียของ BFS โดยผสานกับคำเชิญชวนให้คุณร่วมศึกษาโลกแห่งการเขียนโปรแกรม...
Read More →ในโลกแห่งการเขียนโปรแกรมและอัลกอริทึม การค้นหาเส้นทางที่สั้นที่สุดคือหนึ่งในปัญหาคลาสสิกที่มีการศึกษาและใช้งานอย่างแพร่หลาย เมื่อพูดถึงอัลกอริทึมในการหาเส้นทางที่สั้นที่สุด หลายคนอาจนึกถึง Dijkstra Algorithm แต่เมื่อข้อจำกัดเข้ามาเกี่ยวข้อง ทำให้ Bellman Ford Algorithm ซึ่งเป็นอีกหนึ่งตัวเลือกที่น่าสนใจ และสามารถจัดการกับน้ำหนักที่เป็นลบได้ อัลกอริทึมนี้จึงมีบทบาทสำคัญในงานที่ซับซ้อนมากขึ้น...
Read More →Greedy Algorithm เป็นชนิดของอัลกอริธึมที่เลือกทำการตัดสินใจทีละขั้นตอน, โดยที่ที่แต่ละขั้นตอนมันจะเลือกสิ่งที่ดูเหมือนจะเป็นตัวเลือกที่ดีที่สุดในขณะนั้นไปเรื่อยๆ โดยมิได้พิจารณาถึงผลกระทบในระยะยาวที่จะตามมา ซึ่งบางครั้งอาจทำให้ไม่ได้ผลลัพธ์ที่เป็นคำตอบที่ดีที่สุดแต่แล้วก็ยังได้ผลลัพธ์ที่ ดีพอ สำหรับปัญหาที่กำลังจัดการอยู่...
Read More →การค้นหาด้วยวิธี Breadth First Search (BFS) เป็นหนึ่งในวิธีพื้นฐานที่ใช้ในการท่องไปยังแต่ละจุดในโครงสร้างข้อมูลแบบกราฟหรือต้นไม้ (tree). BFS คืออะไร? อัลกอริทึมนี้ทำงานอย่างไร? มีการใช้งานในปัญหาอะไรบ้าง? และมีจุดเด่นข้อจำกัดอย่างไร? ในบทความนี้ เราจะมาสำรวจคำตอบเหล่านี้พร้อมกับตัวอย่างโค้ดในภาษา Lua ที่น่าสนใจและง่ายต่อการเรียนรู้....
Read More →ความสามารถในการหาเส้นทางที่สั้นที่สุดบนกราฟเป็นหนึ่งในปัญหาหลักที่เกี่ยวพันกับการคำนวณและเป็นที่สนใจของนักพัฒนาโปรแกรมและวิศวกรทั่วโลก เมื่อพูดถึงอัลกอริทึมที่แก้ปัญหานี้ได้อย่างมีประสิทธิภาพ หนึ่งในชื่อที่เด่นชัดคือ Dijkstra Algorithm วันนี้เราจะพาไปรู้จักกับอัลกอริทึมในตำนานนี้พร้อมประยุกต์ใช้ในภาษา Rust ที่โดดเด่นด้วยความปลอดภัยและประสิทธิภาพ...
Read More →Bellman Ford Algorithm เป็นหนึ่งในอัลกอริทึมสำคัญที่ถูกใช้ในการค้นหาเส้นทางสั้นที่สุดในกราฟที่มีน้ำหนักของเส้นเชื่อม อัลกอริทึมนี้มีลักษณะพิเศษที่สามารถจัดการกับเส้นทางที่มีน้ำหนักเป็นลบได้ ซึ่งหลายอัลกอริทึมไม่สามารถทำได้ เช่น Dijkstra Algorithm วันนี้เราจะมาสำรวจการใช้งาน Bellman Ford Algorithm ผ่านภาษา Rust ซึ่งเป็นภาษาโปรแกรมมิ่งที่โดดเด่นในเรื่องประสิทธิภาพและความปลอดภัย...
Read More →Breadth-First Search (BFS) คือหนึ่งใน algorithm ที่ใช้สำหรับการค้นหาหรือ เดิน ทะลุทะลวงผ่านข้อมูลในโครงสร้างแบบกราฟ หรือ trees โดยเริ่มจากจุดเริ่มต้น (root node) และสำรวจทุกๆ จุดที่อยู่ใกล้เคียง (neighbor nodes) ของจุดนั้นก่อนที่จะย้ายไปยังระดับถัดไป นั่นทำให้ BFS มีลักษณะเป็นการค้นหา ?แผ่นเสมอ? ตามระดับความลึกรวมกับขวางของกราฟหรือต้นไม้นั้นๆ...
Read More →การเข้าใจ ฟังก์ชัน Recursive ในภาษา VB.NET และการประยุกต์ใช้ในโลกจริง...
Read More →เมื่อพูดถึงการเขียนโปรแกรมที่มีประสิทธิภาพ หลายคนคงคิดถึงการเขียนโค้ดที่ทำงานได้รวดเร็วและใช้ทรัพยากรขั้นต่ำ หนึ่งในแนวคิดที่ช่วยให้เราสามารถเขียนโปรแกรมที่ตอบสนองต่อเงื่อนไขเหล่านั้นคือ Dynamic Programming หรือ การโปรแกรมแบบไดนามิก แต่ท้ายที่สุดแล้ว Dynamic Programming คืออะไร และมันมีความสำคัญในทางเขียนโปรแกรมอย่างไร...
Read More →Graph Theory หรือ ทฤษฎีกราฟ เป็นสาขาหนึ่งของคณิตศาสตร์ที่เกี่ยวกับการศึกษาคุณสมบัติและการใช้งานของกราฟ (Graph) ซึ่งไม่ได้หมายถึงกราฟในแกนพิกัด X-Y ที่เราคุ้นเคย แต่เป็นโครงสร้างข้อมูลที่ประกอบด้วยจุดยอด (Vertices) และเส้นเชื่อม (Edges) ที่เชื่อมต่อระหว่างจุดยอดเหล่านั้น...
Read More →การทำความเข้าใจโครงสร้างข้อมูลเป็นหัวใจหลักของการเขียนโปรแกรม อีกหนึ่งโครงสร้างข้อมูลที่มีความสำคัญอย่างมากคือ กราฟ (Graph) กราฟช่วยในการแสดงความสัมพันธ์ระหว่างองค์ประกอบต่าง ๆ โดยในกรณีนี้เราจะมาพูดถึงการสร้างกราฟไม่มีทิศทาง (Undirected Graph) ที่ใช้ Linked List ในการเก็บข้อมูลแบบ Adjacency List ในภาษา VB.NET ซึ่งเป็นกราฟที่โหนดไหนก็สามารถไปยังโหนดไหนได้โดยไม่มีทิศทางที่ชัดเจน...
Read More →ไตเติล: สร้างกราฟทิศทางด้วยตัวเองในภาษา Rust โดยใช้ Matrix ไม่ง้อ Library...
Read More →