การเขียนอัลกอริทึมขั้นต้น


ความหมายของอัลกอริทึม (Algorithm)
            มีผู้ให้ความหมายของอัลกอริทึมไว้ดังนี้
         อัลกอริทึม หมายถึง ขั้นตอนวิธี ที่สามารถเข้าใจได้ และมีความยาวจำกัดบอกถึงลำดับ หรือวิธีการในการแก้ปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอนและชัดเจน ว่าทำอย่างไร เมื่อนำเข้าอะไรแล้วจะได้ผลลัพธ์เช่นไร (วิถีมีเดีย สารานุกรมเสรี)
         อัลกอริทึม (Algorithm) หมายถึง กระบวนการแก้ปัญหาที่สามารถเข้าใจได้ มีลำดับหรือวิธีการในการแก้ปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอนและชัดเจน เมื่อนำเข้าอะไรแล้วจะได้ผลลัพธ์เช่นไร ซึ่งแตกต่างจากการแก้ปัญหาแบบสามัญสำนึกหรือฮิวริสติก (Heuristic(http://forums.thainetdev.com/index.php?showtopic=86)
         อัลกอริทึม คือ กระบวนการในการทำงานที่ใช้การตัดสินใจด้วยหลักเหตุผลและคณิตศาสตร์ เป็นตัวช่วยในการเลือกวิธีการหรือขั้นตอนการดำเนินงานต่อไปจนกระทั่งขั้นตอนสุดท้าย เป็นวิธีการที่ใช้แยกย่อยและเรียงลำดับขั้นตอนของกระบวนการในการทำงานต่างๆ เพื่อเพิ่มประสิทธิภาพในการค้นหาและแก้ไขปัญหา (www.ismed.or.th)
         อัลกอริทึม คือ กลุ่มของคำสั่งที่มีขั้นตอนที่ชัดเจน เพื่อนประมวลผลข้อมูลที่ได้รับเข้ามา และ สร้างข้อมูลออกอย่างถูกต้อง (www.cs.science.cmu.ac.th)
         อัลกอริทึม หมายถึง ขั้นตอนวิธี ซึ่งจะอธิบายว่างาน ๆ นั้น ทำอย่างไร โดยประกอบด้วยชุดลำดับเป็นขั้นเป็นตอนที่ชัดเจน และรับประกันได้ว่าเมื่อได้ปฏิบัติอย่างถูกต้องตามขั้นตอนจนจบ ก็จะได้ผลลัพธ์ที่ถูกต้องตามต้องการ (http://it.msu.ac.th)
            Algorithm หมายถึง ชุดคำสั่งที่สร้างไว้ตามขั้นตอน หรือ ลำดับขั้นตอนที่แน่นอน ซึ่งใช้ในการแก้ปัญหา (lexitron.nectec.or.th)

            จากความหมายของอัลกอริทึมต่างๆ ที่กล่าวมาสรุปความหมายของอัลกอริทึมได้ดังนี้
                        อัลกอริทึม หมายถึง วิธีการในการทำงานอย่างใดอย่างหนึ่ง ที่มีลำดับการทำงานเป็นขั้นเป็นตอนชัดเจน และปฏิบัติตามขั้นตอนแล้วได้ผลลัพธ์ที่ถูกต้อง

คุณสมบัติของอัลกอริทึม
            ในการแก้ปัญหาแต่ละปัญหามหลายวิธี ดังนั้นการเขียนอัลกอริทึมเพื่อแก้ปัญหาแต่ละปัญหาก็มีหลายวิธีด้วย แต่ละวิธีมีทั้งข้อเด่นข้อด้อย ดังนั้นต้องเลือกให้เหมาะสมกับงานและสภาพแวดบ้อมในขณะนั้น โดยทั่วไปอัลกอริทึมที่ดี ต้องคุณลักษณะดังต่อไปนี้
1. มีความถูกต้อง ความถูกต้องเป็นคุณสมบัติข้อแรกที่จะต้องพิจารณา นั่นคือเมื่อทำงานตามอัลกอริทึม แล้วจะต้องได้ผลลัพธ์ที่ถูกต้อง ซึ่งถ้าผลลัพธ์ที่ได้จากอัลกอริทึมไม่ถูกต้อง จะถือว่าไม่ใช่อัลกอริทึมที่ดี โดยที่ไม่จำเป็นต้องพิจารณาคุณสมบัติข้ออื่นๆ
2. ใช้เวลาในการปฏิบัติงานน้อยที่สุด
3. สั้น กระชับ มีเฉพาะขั้นตอนที่จำเป็นเท่านั้น
4. ใช้เนื้อที่ในหน่วยความจำน้อยที่สุด เนื้อที่ในหน่วยความจำจะถูกใช้สำหรับเก็บค่าของตัวแปร และเก็บคำสั่งที่ใช้ในการทำงาน ดังนั้น ถ้าอัลกอริทึมยาวเกินความจำเป็น จะทำให้ใช้เนื้อที่มาก และ ถ้ามีตัวแปรมากเกินความจำเป็น ก็จะทำให้เสียเนื้อที่ในหน่วยความจำไปด้วย
5. มีความยืดหยุ่นในการใช้งาน
6. ใช้เวลาในการพัฒนาน้อยที่สุด เมื่อนำอัลกอริทึมไปแปลงเป็นโปรแกรมภาษาคอมพิวเตอร์แล้วจะต้องใช้เวลาน้อยที่สุด
7. ง่ายต่อการทำความเข้าใจ

เครื่องมือช่วยในการเขียนอัลกอริทึม
            การเขียนอัลกอริทึม เป็นการวางแผนเกี่ยวกับการแก้ปัญหา โดยจะอธิบายการทำงานที่ชัดเจนเพื่อเป็นแนวทางในการเขียนโปรแกรม ช่วยให้การเขียนโปรแกรมทำได้ง่ายขึ้น ช่วยให้โปรแกรมมีข้อผิดพลาดน้อยลง นอกจากนี้ยังช่วยตรวจสอบการทำงานของโปรแกรม ทำให้ทราบขั้นตอนการทำงานของโปรแกรมได้อย่างรวดเร็ว โดยไม่ต้องดูจากโปรแกรมจริง
            ในการเขียนอัลกอริทึม มีเครื่องมือช่วยในการเขียนที่นิยมใช้ 3 แบบ คือ
1.       บรรยาย (narrative description)
2.       ผังงาน (flowchart)
3.       รหัสเทียม (pseudo code)

การเขียนอัลกอริทึมแบบบรรยาย
            ลักษณะของการเขียนอัลกอรึมแบบบรรยาย
                        เป็นการแสดงขั้นตอนการทำงานในลักษณะการบรรยายเป็นข้อความด้วยภาษาพูดใดๆ เช่น ภาษาไทย ภาษาอังกฤษ ภาษาเกาหลี ภาษาญี่ปุ่น หรือ ภาษาจีน เป็นต้น ขึ้นอยู่กับความถนัดของผู้เขียนอัลกอริทึม มักเขียนบรรยายขั้นตอนการทำงานเป็นข้อๆ เช่น
            การปลูกต้นไม้ แสดงขั้นตอนการทำงานด้วยอัลกอริทึมแบบบรรยายได้ดังนี้
1.       ขุดหลุม
2.       ใส่ปุ๋ย
3.       นำต้นไม้ลงหลุม
4.       กลบดิน
5.       ปักหลักยึดต้นไม้
6.       รดน้ำ
ข้อดีของการเขียนอัลกอริทึมแบบบรรยาย
                                              การเขียนอัลกอริทึมแบบบรรยาย มีข้อดี คือ ง่านในการเขียนบรรยาย เนื่องจากใช้ภาษาพูกที่ผู้เขียนอัลกอริทึมคุ้นเคยอยู่แล้ว ดังนั้นจึงง่ายในการเขียนบรรยาย
                ข้อเสียของการเขียนอัลกอริทึมแบบบรรยาย
                                          เนื่องจากการเขียนมีลักษณะบรรยาย ดังนั้น
§  ขอบเขตของการบรรยายกว้างเกินไปยืดเยื้อเกินไป
§  ยากต่อความเข้าใจ
§  ยากในตรวจสอบความถูกต้อง
§  ยากในการแปลงเป็นโปรแกรม
 การเขียนอัลกอริทึมแบบผังงาน
            ลักษณะการเขียนอัลกอริทึมแบบผังงาน
                        การเขียนอัลกอริทึมแบบบรรยาย จะเป็นการเขียนอัลกอริทึมแบบไม่เป็นมาตรฐาน เนื่องจากเขียนบรรยายด้วยภาษาพูดใดๆ ดังนั้นคนที่จะเข้าใจได้ ต้องเป็นคนที่เข้าใจภาษาพูดนั้นด้วย และทำความเข้าใจก็ขึ้นกับการตีความของคนนำไปใช้ แต่การเขียนอัลกอริทึมแบบผังงานจะแสดงขั้นตอนการทำงานในลักษณะของรูปภาพหรือสัญลักษณ์ ซึ่งเป็นสัญลักษณ์ที่เป็นมาตรฐาน ไม่อ้างอิงภาษาใดภาษาหนึ่ง ทำให้เห็นลำดับการทำงานก่อนหลังได้ชัดเจน เช่น
                        การปลูกต้นไม้ แสดงขั้นตอนการปลูกต้นไม้ด้วยผังงาน ดังภาพต่อไปนี้
ภาพที่ 3 ผังงานแสดงขั้นตอนการปลูกต้นไม้
 
         ข้อดีของการเขียนอัลกอรทึมแบบผังงาน
§  ทำความเข้าใจได้ง่าย
§  ตรวจสอบความถูกต้องได้ง่าย
§  พัฒนาโปรแกรมได้ง่าย
§  ง่ายต่อการบำรุงรักษาโปรแกรม
วิธีการเขียนผังงานที่ดี
§  ใช้สัญลักษณ์ตามที่กำหนดไว้ ขนาดแตกต่างกันได้
§  ใช้ลูกศรแสดงทิศทางการไหลของข้อมูลจากล่างขึ้นบนหรือซ้ายไปขวา
§  คำอธิบายในภาพควรสั้นกระทัดรัด และเข้าใจได้ง่าย
§  มีความเป็นระเบียบเรียบร้อย สะอาด
§  ทุกแผนภาพต้องมีลูกศรแสดงทิศทางเข้า – ออก
§  ผังงานควรสมดุลระหว่างซ้ายและขวา
§  ไม่ควรโยงเส้นเชื่อมผังงานี่อยู่ไกลมากๆ ควรใช้สัญลักษณ์จุดเชื่อมต่อแทน
§  ผังงานควรทดสอบความถูกต้องของการทำงานก่อนนำไปเขียนโปรแกรม

การเขียนอัลกอริทึมแบบรหัสเทียม
            ลักษณะการเขียนอัลกอริทึมแบบรหัสทียม
                        รหัสเทียมมาจากภาษาอังกฤษว่าpseudo code (ซูโดโค้ด) เรียกอีกอย่างว่า รหัสจำลอง เป็นการเขียนขั้นตอนการทำงานในลักษณะของคำอธิบายที่มีรูปแบบโครงสร้างชัดเจน ไม่ขึ้นกับภาษาใดภาษาหนึ่ง แต่สามารถเปลี่ยนเป็นภาษาคอมพิวเตอร์ได้ง่าย ดังนั้นโครงสร้างส่วนใหญ่จึงนิยมใช้คำสั่งเฉพาะที่มีอยู่ในคอมพิวเตอร์เพื่อแทนการทำงานต่างๆ เช่น Read  if   Case  หรือ While/Do เป็นต้น การเขียนอัลกอริทึมมีลักษณะดังต่อไปนี้
§  รูปแบบเป็นภาษพูดง่าย ๆ ภาษอังกฤษ หรือภาษาไทยก็ได้
§  ไม่มีกฎที่แน่นอนตายตัว แต่ลักษณะคล้ายกับภาษาคอมพิวเตอร์
§  ไม่เจาะจงภาษาคอมพิวเตอร์ใดภาษาหนึ่ง
§  ใช้คำเฉพาะ (Keyword)
§  เริ่มต้น คือคำสั่งที่อยู่บรรทัดแรก และ สิ้นสุด คือ คำสั่งที่อยู่บรรทัดสุดท้าย
§  .ใช่ย่อหน้าในการเขียนการทำงานย่อยที่อยู่ภายใน
§  ไม่ระบุอุปกรณ์ในการรับข้อมูลหรือแสดงผลข้อมูล
§  ข้อมูลต่างๆที่ใช้ควรจะอยู่ในรูปของตัวแปร
ลักษณะที่ดีของรหัสเทียม
            การเขียนรหัสเทียมที่ดี จะต้องมีลักษณะดังนี้
§  ชัดเจน
§  สั้น กระชับและได้ใจความ
§  รูปแบบแน่นอนกะทัดรัด และมองคล้ายภาษาคอมพิวเตอร์ระดับสูง
§  แปลเป็นภาษาคอมพิวเตอร์ได้เร็ว

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Self-Driving Trucks I รถบรรทุกไร้คนขับ

คำถามบทที่ 1