วันเสาร์ที่ 22 พฤศจิกายน พ.ศ. 2557

หลักการแก้ปัญหา

หลักการแก้ปัญหา                                                                                                  
      
       
    ในชีวิตประจำวันทุกคนต้องเคยพบกับปัญหาต่างๆ ไม่ว่าจะเป็นปัญหาด้านการเรียน การงาน การเงิน หรือแม้แต่การเล่นเกม เมื่อพบกับปัญหา แต่ละคนมีวิธีที่จะจัดการหรือแก้ปัญหาเหล่านั้นแตกต่างกันไป ซึ่งแต่ละวิธีการอาจให้ผลลัพธ์ที่เหมือนหรือแตกต่างกันเล็กน้อย ทั้งนี้ขึ้นอยู่กับความรู้ ความสามารถ และประสบการณ์ของบุคคลผู้นั้น อย่างไรก็ตาม หากเรานำวิธีการแก้ปัญหาต่างวิธีนั้นมาวิเคราะห์ให้ดี จะพบว่าสามารถสรุปวิธีการเหล่านั้นเป็นทฤษฎีซึ่งมีรูปแบบที่แน่นอนได้ และบางครั้งต้องอาศัยการเรียนรู้ในนระดับสูงเพื่อแก้ปํญหาบางอย่างให้สมบูรณ์แบบ แต่ก่อนที่เราจะศึกษาต่อไป ลองพิจารณาปัญหาต่อไปนี้
            เกมทายใจคือเกมให้ผู้เล่นทายตัวเลข 3 ตัว ในการเล่นเกมต้องใช้ผู้เล่น 2 คน คนที่หนึ่งคือ ผู้กำหนด เป็นคนกำหนดเลข 3 ตัวที่ไม่ซ้ำกันโดยเลือกจากกลุ่มตัวเลข 1-9 และอีกคนหนึ่งคือผู้ทาย เป็นผู้ทายตัวเลข 3 ตัวที่ไม่ซ้ำกันที่ผู้กำหนดให้กำหนดไว้แล้ว หลังจากที่ผู้ทายทายเลขแต่ละครั้ง ผู้กำหนดต้องให้รายละเอียดว่าตัวเลขที่ทายมานั้นถูกต้องกี่ตัว และในกรณีที่ตัวเลขที่ทายมาถูกตำแหน่งด้วยก็ต้องบอกว่าถูกตำแหน่งกี่ตัว เช่น ถ้าตัวเลขที่กำหนดไว้เป็น 815 และผู้ทายทายว่า 123 ผู้กำหนดต้องแจ้งว่าตัวเลขที่ทายนั้นถูก 1 ตัว และไม่มีตัวใดถูกตำแหน่ง

เลขที่ทายจำนวน
เลขที่ถูก
จำนวนเลข
ที่ถูกตำแหน่ง
1231-
41522
42511
41611
71522
81533
       จะเห็นว่าการแก้ปัญหาดังกล่าวข้างต้น นอกจากจะใช้วิธีลองผิดลองถูกในการทายครั้งแรกๆ แล้วยังมีการใช้เหตุผลประกอบการแก้ปัญหาซึ่งเราเรียกวิธีการดังกล่าวว่า "วิธีขจัด" (method of elimination) กล่าวคือ จะแยกข้อมูลออกเป็นกรณีที่เป็นไปไม่ได้ทิ้ง จนเหลือกรณีที่เป็นไปได้ วิธีการดังกล่าวสามารถอธิบายได้ว่าทำไมจึงคิดหรือทำเช่นนั้น รูปแบบของการใช้เหตุผลประกอบการแก้ปัญหาอาจแตกต่างกัน ขึ้นอยู่กับเงื่อนไข ในปัญหาบางปัญหา อาจจะขจัดให้เหลือกรณีเดียวไม่ได้ ก็อาจจะทำให้เหลือกรณีน้อยที่สุด นอกจากเกมทายใจเรายังมีเกมลับสมองที่น่าสนใจและท้าทายความสามารถในการแก้ปัญหาอยู่อีกมากมายที่หาเล่นได้ตามเว็บไซต์ ตัวอย่างเช่น

นอกจากวิธีการแก้ปัญหาที่ยกตัวอย่างมาซึ่งได้แก่ วิธีการลองผิดลองถูก การใช้เหตุผล การใช้วิธีขจัด ยังมีวิธีการแก้ปัญหาอีกมากมายที่ผู้แก้ปัญหาสามารถเลือกใช้ให้เขากับตัวปัญหาและประสบการณ์ของผู้แก้ปัญหา แต่อย่างไรก็ตาม หากพิจารณากันอย่างดี วิธีการเหล่านั้นล้วนมีขั้นตอนที่คล้ายคลึงกัน และจากการศึกษาพฤติกรรมในการเรียนรู้และแก้ปัญหาของมนุษย์ พบว่าโดยปกติ มนุษย์มีกระบวนการในการแก้ปัญหาที่มีลำดับขั้นตอนทั้งสิ้น 4 ขั้นตอน ซึ่ง เป็นเสมือนขั้นบันได (stair) ที่ทำให้มนุษย์สามารถประสบความสำเร็จในการแก้ปัญหาต่างๆ ได้ กระบวนการทั้ง 4 ขั้นตอนนั้นได้แก่




1.
การวิเคราะห์และกำหนดรายละเอียดของปัญหา (State the problem)
2.
การเลือกเครื่องมือและออกแบบขั้นตอนวิธี (Tools and Algorithm development)
3.
การดำเนินการแก้ปัญหา (Implementation)
4.
การตรวจสอบและปรับปรุง (Refinement)
  


การวิเคราะห์และกำหนดรายละเอียดของปัญหา

การวิเคราะห์และกำหนดรายละเอียดของปัญหา (State the problem)
      ขั้นตอนนี้เป็นขั้นตอนแรกสุดก่อนที่จะลงมือแก้ปัญหา แต่ผู้แก้ปัญหามักจะมองข้ามความสำคัญของขั้นตอนนี้อยู่เสมอ จุดประสงค์ของขั้นตอนนี้ คือ การทำความเข้าใจกับปัญหาเพื่อแยกให้ออกว่าข้อมูลที่กำหนดมาในปัญหาหรือเงื่อนไขของปัญหาคืออะไร และสิ่งที่ต้องการคืออะไร อีกทั้งวิธีการที่ใช้ประมวลผล ในการวิเคราะห์ปัญหาใด กล่าวโดยสรุปแล้วองค์ประกอบในการวิเคราะห์มีอยู่ 3 องค์ประกอบ

1.1 การระบุข้อมูลเข้า ได้แก่ การพิจารณาข้อมูลและเงื่อนไขที่กำหนดมาในปัญหา
1.2 การระบุข้อมูลออก ได้แก่ การพิจารณาเป้าหมายหรือสิ่งที่ต้องหาคำตอบ
1.3 การกำหนดวิธีประมวลผล ได้แก่ การพิจารณาขั้นตอนวิธีการได้มาซึ่งคำตอบหรือข้อมูลออก
ตัวอย่างที่ 1 แสดงการวิเคราะห์และกำหนดรายละเอียดของการหาค่าเฉลี่ยของจำนวนเต็ม 5 จำนวน ได้แก่ 0 3 4 8 และ 12
(1)การระบข้อมูลเข้า
ในที่นี้โจทย์กำหนดให้หาค่าเฉลี่ยของจำนวนเต็ม 5 จำนวน ดังนั้น ข้อมูลเข้าได้แก่จำนวน 0 3 4 8 และ 12
(2)การระบุข้อมูลออก
จากโจทย์สิ่งที่เป็นคำตอบของปัญหา คือค่าเฉลี่ย (x) ของจำนวนทั้งห้า
(3)การกำหนดวิธีการประมวลผล
จากสิ่งที่โจทย์ต้องการ "ค่าเฉลี่ย" หมายถึง ผลรวมของจำนวนทั้ง 5 หารด้วย 5 ดังนั้น ขั้นตอนของการประมวลผลประกอบด้วย
3.1รับค่าจำนวนทั้ง 5 จำนวน
3.2นำจำนวนเต็มทั้ง 5 มาบวกเข้าด้วยกัน
3.3นำผลลัพธ์จากข้อ 3.2 มาหารด้วย 5
ตัวอย่างที่ 2 แสดงการวิเคราะห์และกำหนดรายละเอียดของการหาค่า x เมื่อ x คือจำนวนเต็มจำนวนหนึ่งในกลุ่มจำนวนเต็ม 5 จำนวนที่มีค่าเฉลี่ยเป็น 10 และจำนวนอีก 4 จำนวนได้แก่ 3 4 8 และ 12
(1)การระบข้อมูลเข้า
จากโจทย์ข้อมูลเข้า ได้แก่
2.1จำนวนอีก 4 จำนวน คือ 3 4 8 12
2.2ค่าเฉลี่ยของจำนวนทั้ง 5 จำนวน คือ 10
(2)การระบุข้อมูลออก
จากโจทย์สิ่งที่เป็นผลลัพธ์ คือ ค่า x
(3)การกำหนดวิธีการประมวลผล
จากโจทย์และความหมายของ "ค่าเฉลี่ย" เราสามารถสรุปขั้นตอนของการประมวลผลได้ดังนี้
3.1หาค่าผลรวมของจำนวนเต็มทั้ง 5 โดยนำค่าเฉลี่ยคูณด้วยจำนวนของเลขจำนวนเต็ม นั่นคือ 10 ´ 5 = 50
3.2 จากความหมายของ "ผลรวม" จะได้ 3+4+8+12+x = 50
3.3แก้สมการ 27 + x = 50 (จะได้ x = 23 ซึ่งคือผลลัพธ์)

ดำเนินการแก้ปัญหา


  ดำเนินการแก้ปัญหา

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

การจำลองความคิด


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



 2) การจำลองความคิดเป็นสัญลักษณ์หรือแผนภาพเครื่องหมาย รูปแบบต่าง ๆ ซึ่งใช้สำหรับสื่อสารความหมายให้เข้าใจตรงกัน สถาบันมาตรฐานแห่งชาติอเมริกา (The American National Standard Institute, ANSI) ได้กำหนดสัญลักษณ์ไว้เป็นมาตรฐานแล้ว สามารถนำไปใช้ได้ตามความเหมาะสมต่อไป

การเลือกเครื่องมือและออกแบบขั้นตอนวิธีการพัฒนา

การเลือกเครื่องมือและออกแบบขั้นตอนวิธีการพัฒนา(Tools and Algorithm development)
            ขั้นตอนนี้เป็นขั้นตอนของการวางแผนในการแก้ปัญหาอย่างละเอียดถี่ถ้วน หลังจากที่เราทำความเข้าใจกับปัญหา พิจารณาข้อมูลและเงื่อนไขที่มีอยู่ และสิ่งที่ต้องการหาแล้วในขั้นตอนที่ 1 เราสามารถคาดคะเนวิธีการที่เราจะใช้ในการแก้ปัญหากระบวนการนี้จำเป็นอาศัยประสบการณ์ของผู้แก้ปัญหาเป็นหลัก หากผู้แก้ปัญหาเคยพบกับปัญหาทำนองนี้มาแล้วก็สามารถดำเนินการตามแนวทางที่เคยปฏิบัติมา
            ขั้นตอนนี้จะเริ่มจากการเลือกเครื่องมือที่ใช้ในการแก้ปัญหา โดยพิจารณาความเหมาะสมระหว่างเครื่องมือกับเงื่อนไขต่างๆ ของปัญหา ซึ่งหมายรวมถึงความสามารถของเครื่องมือในการแก้ปัญหาดังกล่าว และสิ่งที่สำคัญคือความคุ้นเคยในการใช้งานเครื่องมือนั้นๆ ของผู้แก้ปัญหา
            อีกสิ่งหนึ่งที่สำคัญในการแก้ปัญหา คือ ยุทธวิธีที่ใช้ในการแก้ปัญหาหรือที่เราเรียกว่า ขั้นตอนวิธี (algorithm) ในการแก้ปัญหา หลังจากที่เราได้เครื่องมือช่วยแก้ปัญหาแล้ว ผู้แก้ปัญหาต้องวางแผนว่าจะใช้เครื่องมือดังกล่าวอย่างเพื่อให้ได้ผลลัพธ์ที่ถูกต้องและดีที่สุด ในการออกแบบขั้นตอนวิธีในการแก้ปัญหา ผู้แก้ปัญหาควรใช้แผนภาพหรือเครื่องมือในการแสดงขั้นตอนการทำงานเพื่อให้ง่ายต่อความเข้าใจเช่น ผังงาน (flowchart) รหัสลำลอง (pseudo code) การใช้เครื่องมือช่วยออกแบบดังกล่าวนอกจากแสดงกระบวนการที่ชัดเจนแล้ว ยังช่วยให้ผู้แก้ปัญหาสามารถหาข้อผิพลาดของวิธีการที่ใช้ได้ง่ายและแก้ไขได้อย่างรวด

การตรวจสอบและปรับปรุง

การตรวจสอบและปรับปรุง (Refinement)

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