เลือกหัวข้อจากแถบเมนูด้านซ้าย (กรณีหน้าจอเล็กเมนูจะหดกลายเป็นสัญลักษณ์สามขีดอยู่ในแถบเมนูด้านบน) หรือใส่คำค้นหาที่ช่องด้านล่างนี้ เพื่อค้นหาหัวข้อบทความหรือ Tutorial เกี่ยวกับเรื่อง scheduling ที่ต้องการ
ในโลกการเขียนโปรแกรมที่พัฒนาไปอย่างรวดเร็ว การเลือกใช้โครงสร้างข้อมูลที่เหมาะสมกับปัญหาที่ต้องการแก้ไขนั้นมีความสำคัญยิ่ง หนึ่งในโครงสร้างข้อมูลที่มีประสิทธิภาพในการจัดการข้อมูลแบบไดนามิคคือ Priority Queue ในภาษา C++ ซึ่งเป็นโครงสร้างข้อมูลที่สามารถจัดเรียงข้อมูลตามลำดับความสำคัญ (priority) และให้กำหนดการดำเนินงานต่างๆ เช่น insert, find, และ delete ได้อย่างเหมาะสม...
Read More →การเขียนโปรแกรมนั้น ไม่เพียงแต่เป็นการสร้างสรรค์โค้ดให้ทำงานได้ตามต้องการ เท่านั้น แต่ยังรวมถึงการออกแบบและพัฒนาอัลกอริทึมให้มีประสิทธิภาพด้วยเช่นกัน หนึ่งในเทคนิคที่ช่วยพัฒนาประสิทธิภาพของโปรแกรมคือ Memorization ซึ่งมักจะใช้ร่วมกับ Dynamic Programming. ในบทความนี้ เราจะมาทำความรู้จักกับ Memorization อย่างลึกซึ้ง พร้อมทั้งเสนอตัวอย่างจากภาษา Java เพื่อช่วยให้เห็นภาพการประยุกต์ใช้ในโลกการเขียนโปรแกรมจริง...
Read More →Permutation หมายถึงการจัดเรียงสมาชิกทุกตัวของเซ็ตหรือรายการวัตถุในลำดับต่างๆ โดยไม่มีการทับซ้อนกัน เมื่อพิจารณาจากมุมมองของวิทยาการคอมพิวเตอร์และอัลกอริทึม, Permutation คือเทคนิคพื้นฐานที่ใช้ในการแก้ปัญหาจำนวนมาก เช่น ปัญหาการให้บริการลูกค้า (scheduling problems), ปัญหาการเดินทางของพ่อค้า (Travelling Salesman Problem), และอื่นๆ...
Read More →Greedy Algorithm หรืออัลกอริทึมแบบตะกละ เป็นแนวคิดเบื้องต้นในการแก้ไขปัญหาทางด้านการคำนวณที่จำเป็นต้องมีการตัดสินใจหลายขั้นตอน เพื่อหาคำตอบที่ดีที่สุดหรือเพียงพอดี (Optimal Solution) ในขณะที่เทคนิคการแก้ปัญหานี้อาจไม่รับประกันว่าจะได้คำตอบที่ดีที่สุดเสมอไป เนื่องจากมันอาจละเลยการมองข้ามไปยังสถานการณ์อื่นๆ ที่อาจมีคำตอบที่ดีกว่า แต่มันก็มักใช้ในเหตุการณ์ที่ความเร็วในการแก้ปัญหาเป็นสิ่งสำคัญและสามารถยอมรับคำตอบที่ใกล้เคียงกับคำตอบที่ดีที่สุดได้...
Read More →ทุกวันนี้ปัญหาการตัดสินใจหรือการค้นหาคำตอบที่ดีที่สุดภายใต้ข้อจำกัดต่างๆ เป็นสิ่งที่พบเจอได้บ่อยในด้านวิทยาการคอมพิวเตอร์หรือธุรกิจต่างๆ การใช้วิธีคิดที่เป็นระบบและมีเทคนิคเฉพาะเพื่อตอบสนองปัญหาเหล่านี้จึงเป็นสิ่งจำเป็น Branch and Bound Algorithm (หรือแบบจำลองกิ่งก้านและขอบเขต) คือหนึ่งในอัลกอริทึมที่ถูกนำมาใช้เพื่อจัดการกับปัญหาที่มีลักษณะเฉพาะนี้...
Read More →การเขียนโปรแกรมนั้นก็คือการแก้ปัญหาต่างๆ ผ่านการสั่งงานคอมพิวเตอร์ด้วยภาษาที่เครื่องจักรสามารถเข้าใจได้ หนึ่งในทักษะเชิงกลยุทธ์ที่สำคัญทางด้านการเขียนโปรแกรมคือการจัดการกับปัญหาการซ้ำซ้อนของคำนวณซึ่งสามารถคร่าชีวิตประสิทธิภาพของโปรแกรมได้ เทคนิคที่ช่วยในเรื่องนี้คือ Memorization หรือการจำผลการคำนวณไว้....
Read More →เมื่อเราพูดถึงการแก้ปัญหาแบบที่ซับซ้อนไปด้วยการลองผิดลองถูก, Backtracking คือสิ่งที่ตอบโจทย์ได้อย่างยอดเยี่ยม เป็นอัลกอริธึมที่ใช้เทคนิคการทดลองทางเลือกต่างๆ เพื่อหาคำตอบที่เป็นไปได้ ถ้าทางเลือกนั้นพาเราไปสู่กับดักหรือทางตัน เราก็จะ ย้อนกลับ (backtrack) ไปหาทางเลือกอื่นที่ยังไม่ได้ทดลอง...
Read More →การเขียนโปรแกรมเพื่อแก้ไขปัญหาทางคณิตศาสตร์หรือการคำนวณในโลกปัจจุบัน นับเป็นทักษะที่พึงประสงค์สำหรับนักพัฒนาซอฟต์แวร์ทุกคน หนึ่งในอัลกอริทึมที่มีประสิทธิภาพและดำเนินการได้ง่ายคือ Greedy Algorithm (อัลกอริทึมตะกละ) วันนี้เราจะมาพูดถึงคุณสมบัติพิเศษของอัลกอริทึมนี้ และทบทวนวิธีการเขียนโปรแกรมด้วยภาษา Perl เพื่อแก้ไขปัญหาโดยใช้อัลกอริทึมตะกละ...
Read More →Greedy Algorithm เป็นชนิดของอัลกอริธึมที่เลือกทำการตัดสินใจทีละขั้นตอน, โดยที่ที่แต่ละขั้นตอนมันจะเลือกสิ่งที่ดูเหมือนจะเป็นตัวเลือกที่ดีที่สุดในขณะนั้นไปเรื่อยๆ โดยมิได้พิจารณาถึงผลกระทบในระยะยาวที่จะตามมา ซึ่งบางครั้งอาจทำให้ไม่ได้ผลลัพธ์ที่เป็นคำตอบที่ดีที่สุดแต่แล้วก็ยังได้ผลลัพธ์ที่ ดีพอ สำหรับปัญหาที่กำลังจัดการอยู่...
Read More →อัลกอริทึม Branch and Bound คืออะไร?...
Read More →Minimum Cost Flow Algorithm เป็นแอลกอริทึมที่ใช้สำหรับหาค่าที่มีต้นทุนต่ำสุดเพื่อส่งสินค้าหรือ stream ของข้อมูลต่างๆ จากแหล่งกำเนิดไปยังปลายทางโดยผ่านกราฟที่มีเส้นทางและต้นทุนต่างกัน ทุกๆ edge หรือเส้นในกราฟจะมี capacity และ cost ที่กำหนดไว้...
Read More →หัวข้อ: เจาะลึกตัวแปรในภาษา Perl: ความหมาย, การใช้งาน พร้อมตัวอย่างจากโลกจริง...
Read More →เมื่อพูดถึงการเขียนโปรแกรมที่มีประสิทธิภาพ หลายคนคงคิดถึงการเขียนโค้ดที่ทำงานได้รวดเร็วและใช้ทรัพยากรขั้นต่ำ หนึ่งในแนวคิดที่ช่วยให้เราสามารถเขียนโปรแกรมที่ตอบสนองต่อเงื่อนไขเหล่านั้นคือ Dynamic Programming หรือ การโปรแกรมแบบไดนามิก แต่ท้ายที่สุดแล้ว Dynamic Programming คืออะไร และมันมีความสำคัญในทางเขียนโปรแกรมอย่างไร...
Read More →Graph Theory หรือ ทฤษฎีกราฟ เป็นสาขาหนึ่งของคณิตศาสตร์ที่เกี่ยวกับการศึกษาคุณสมบัติและการใช้งานของกราฟ (Graph) ซึ่งไม่ได้หมายถึงกราฟในแกนพิกัด X-Y ที่เราคุ้นเคย แต่เป็นโครงสร้างข้อมูลที่ประกอบด้วยจุดยอด (Vertices) และเส้นเชื่อม (Edges) ที่เชื่อมต่อระหว่างจุดยอดเหล่านั้น...
Read More →เมื่อพูดถึงการจัดการคลัสเตอร์ของเครื่องคอมพิวเตอร์หรือการประมวลผลร่วมกันในหมู่กองทัพเครื่องแม่ข่ายที่มีจำนวนมาก Apache Mesos นับเป็นหนึ่งในเทคโนโลยีที่สร้างความแตกต่างและนำเสนอวิธีการปฏิบัติงานที่หน้าสนใจอย่างยิ่งในด้านการจัดสรรทรัพยากรคอมพิวเตอร์ให้เหมาะสม...
Read More →บทความ: ทำความเข้าใจการใช้ FOR EACH ในภาษา COBOL ผ่านตัวอย่างง่ายๆ...
Read More →การสร้าง Queue ของตัวเองในภาษา C โดยไม่ใช้ไลบรารีนั้นเป็นประเด็นที่น่าสนใจและมีประโยชน์ในการประยุกต์ใช้ความรู้พื้นฐานของการเขียนโปรแกรมที่เราสามารถพัฒนาขึ้นเป็นเครื่องมือที่มีคุณค่าในโลกแห่งการคอมพิวเตอร์ได้จริงๆ...
Read More →การเขียนโปรแกรมนั้นไม่เพียงแต่การปูพื้นฐานทางภาษาเท่านั้น แต่ยังรวมถึงการเข้าใจโครงสร้างข้อมูลด้วย วันนี้เราจะพูดถึงเรื่องหนึ่งที่น่าสนใจ นั่นก็คือ Priority Queue หรือ คิวที่มีลำดับความสำคัญ ในภาษา C ซึ่งเราจะทำความเข้าใจว่ามันคืออะไร ทำงานอย่างไร และเราจะสร้างมันขึ้นมาจากเริ่มต้นได้อย่างไรโดยไม่ใช้ไลบรารีพื้นฐาน...
Read More →หากคุณกำลังมองหาโครงสร้างข้อมูลที่มีความยืดหยุ่นและสามารถใช้งานได้หลากหลาย เราขอแนะนำให้คุณรู้จักกับ Double Ended Queue หรือ Deque ในภาษา Java โดยเราจะสร้าง Deque ด้วยตนเองโดยไม่ใช้ library ที่มีให้เสร็จสรรพ นอกจากนี้เรายังจะพาคุณไปดู usecase ในโลกจริงและตัวอย่างโค้ดที่เป็นประโยชน์อีกด้วย!...
Read More →การเขียนบทความเกี่ยวกับการสร้างกราฟทิศทางด้วยตนเองโดยไม่ใช้ไลบรารี ด้วยการใช้ linked list สำหรับการเก็บ adjacency list ในภาษา Java...
Read More →ในโลกแห่งการเขียนโปรแกรม, คิวลำดับความสำคัญ (Priority Queue) เป็นโครงสร้างข้อมูลที่มีความสำคัญอย่างยิ่ง เมื่อเราต้องการให้งานบางอย่างที่มีความสำคัญมากกว่าได้รับการประมวลผลก่อน ใน C#, คุณอาจคุ้นเคยกับคลาส Queue<T> หรือ SortedDictionary<TKey,TValue> ที่มาพร้อมกับ .NET Framework และ .NET Core, แต่การสร้าง Priority Queue ด้วยตัวเองนั้นเป็นการพิสูจน์ความสามารถระดับสูงที่ทำให้คุณเข้าใจอัลกอริธึมลึกซึ้งยิ่งขึ้น และอาจทำให้โปรแกรมที่คุณพัฒนามีความยืดหยุ่นมากขึ้น...
Read More →