เลือกหัวข้อจากแถบเมนูด้านซ้าย (กรณีหน้าจอเล็กเมนูจะหดกลายเป็นสัญลักษณ์สามขีดอยู่ในแถบเมนูด้านบน) หรือใส่คำค้นหาที่ช่องด้านล่างนี้ เพื่อค้นหาหัวข้อบทความหรือ Tutorial เกี่ยวกับเรื่อง combinatorial ที่ต้องการ
อัลกอริธึม Branch and Bound คือหนึ่งในเทคนิคการค้นหาแบบเป็นระบบสำหรับปัญหาการตัดสินใจแบบเชิงเลข (Combinatorial Optimization Problems) ที่มีวัตถุประสงค์เพื่อหาคำตอบที่เหมาะสมที่สุด (Optimal Solution) อัลกอริธึมนี้ประกอบด้วยสองส่วนหลักๆ คือการแบ่งสาขา (Branching) เพื่อสำรวจความเป็นไปได้ของคำตอบ และการกำหนดขอบเขตสูงสุดหรือต่ำสุด (Bounding) เพื่อตัดทางเลือกที่ไม่จำเป็นออกไป...
Read More →ในโลกที่เราทุกคนเป็นนักเดินทาง ปัญหาที่ต้องพบเจอบ่อยครั้งคือการเดินทางให้ครอบคลุมทุกจุดที่ต้องการไปในเวลาน้อยที่สุด และนี่คือหัวใจสำคัญของ Travelling Salesman Problem (TSP) หรือ ปัญหานักขายเร่ ซึ่งเป็นหนึ่งในปัญหาที่ได้รับความนิยมและเป็นที่ท้าทายสำหรับนักวิทยาการคอมพิวเตอร์ตั้งแต่อดีตจนถึงปัจจุบัน...
Read More →Dynamic Programming (DP) เป็นรูปแบบหนึ่งของ algorithm ที่ใช้ในการแก้ปัญหาที่ซับซ้อน โดยหลักการทำงานคือการแบ่งปัญหาใหญ่ออกเป็นปัญหาย่อยๆ เพื่อที่จะได้คำตอบอย่างรวดเร็วและมีประสิทธิภาพ ในการใช้งาน DP เรามักจะเก็บผลลัพธ์ของปัญหาย่อยไว้ที่โปรแกรมคำนวณเพื่อใช้งานในอนาคต (memoization) เพื่อลดขั้นตอนการคำนวณซ้ำๆ ที่ไม่จำเป็น...
Read More →ในโลกของการพัฒนาซอฟต์แวร์ การเลือกใช้อัลกอริทึม (Algorithm) ที่เหมาะสมกับปัญหาที่เราต้องแก้ไข เป็นสิ่งสำคัญมาก หนึ่งในอัลกอริทึมที่หลายๆ คนอาจมองข้าม คือ Backtracking ซึ่งเป็นวิธีที่ให้เราทดลองทุกๆ คาดเดาเพื่อหาคำตอบในปัญหาที่มีโครงสร้างเป็นต้นไม้หรือกราฟ ในบทความนี้ เราจะมาทำความรู้จักกับ Backtracking ผ่านภาษา Golang ซึ่งมีความสามารถในการเขียนโปรแกรมได้อย่างปลอดภัย รวดเร็ว และมีประสิทธิภาพ...
Read More →Travelling Salesman Problem (TSP) เป็นหนึ่งในปัญหาสำคัญในด้านการคำนวณและอัลกอริทึมของวิชาวิทยาการคอมพิวเตอร์ โดยที่ปัญหานี้กำหนดให้มี นักขาย หนึ่งคนที่ต้องการเดินทางผ่านเมืองต่างๆ ทีละเมืองเพื่อขายสินค้า และเขาต้องการหาเส้นทางที่สั้นที่สุดที่จะเดินทางผ่านเมืองทั้งหมดเพียงครั้งเดียวและกลับสู่จุดเริ่มต้นอีกครั้งหนึ่ง...
Read More →ในหลายสาขาวิชาที่เกี่ยวกับคณิตศาสตร์และวิทยาการคอมพิวเตอร์ เรามักจะพบกับคำว่า Permutation ซึ่งในภาษาไทยมีความหมายว่าการจัดเรียงหรือการสับเปลี่ยนของข้อมูลที่กำหนด. อัลกอริธึม Permutation เป็นเครื่องมือที่สำคัญในหลายๆ ด้าน เช่น การแก้ปัญหา Combinatorial, การทำ Cryptography, และกระบวนการสร้างข้อมูลทดสอบ....
Read More →ในโลกของคอมพิวเตอร์และโปรแกรมมิ่ง มีหนึ่งเทคนิคที่ซ่อนตัวอยู่ในหลากหลายปัญหาซับซ้อน นั่นก็คือ Backtracking หรือการย้อนกลับ ซึ่งพบว่าใช้ได้ผลอย่างมหัศจรรย์ในการหาคำตอบที่เป็นไปได้สำหรับปัญหาจำพวก การค้นหา และ การตัดสินใจ บทความนี้จะพาท่านไปสำรวจความลึกของ Backtracking โดยใช้ภาษา Rust ซึ่งเป็นภาษาโปรแกรมมิ่งที่มุ่งเน้นความปลอดภัยและประสิทธิภาพ เพื่อเพิ่มความเข้าใจ เราจะยกตัวอย่างการแก้ปัญหา วิเคราะห์ความซับซ้อน และข้อดีข้อเสียพร้อมตัวอย่างโค้ดเพื่อให้ท่านได้เห็นภาพชัดเจนมากยิ่งขึ้น...
Read More →อัลกอริทึม Branch and Bound คืออะไร?...
Read More →ปัญหา Travelling Salesman Problem (TSP) คือหนึ่งในปัญหาคลาสสิกของโลกการคำนวณที่ท้าทายและน่าสนใจ ซึ่งจำลองสถานการณ์ที่ผู้เดินทาง (Salesman) ต้องการหาเส้นทางที่สั้นที่สุดซึ่งสามารถเยี่ยมชมเมืองต่างๆ และกลับมาที่เมืองเริ่มต้นด้วยการเดินทางผ่านแต่ละเมืองเพียงครั้งเดียว เป็นปัญหาที่มีลักษณะของ Combinatorial Optimization และมีการนำไปใช้ในหลายสาขาวิชา ทั้งการขนส่ง, การวางแผนเส้นทางโลจิสติกส์, การจัดสรรงานผลิต และอื่นๆ อีกมากมาย...
Read More →การเขียนโปรแกรมไม่ใช่เพียงแค่การคิดคำสั่งที่จะทำให้คอมพิวเตอร์ทำงานได้ตามที่เราต้องการเท่านั้น แต่ยังรวมไปถึงการค้นพบและใช้งานหลักคณิตศาสตร์ภายในโค้ดโปรแกรม หนึ่งในหลักคณิตศาสตร์ที่น่าสนใจคือ Catalan number ซึ่งสามารถนำไปใช้งานในหลากหลายกรณี (usecase) ในโลกจริง วันนี้เราจะมาพูดถึงวิธีการสร้าง Catalan number generator ในภาษา Java แบบง่ายๆ พร้อมทั้งตัวอย่างโค้ดและอธิบายการทำงานของมัน...
Read More →