อะไรคือความแตกต่างระหว่างฮิวริสติกและอัลกอริทึม?
คำตอบ:
อัลกอริทึมคือคำอธิบายของนั้นวิธีการแบบอัตโนมัติปัญหา อัลกอริทึมทำอะไรถูกกำหนดไว้อย่างแม่นยำ วิธีแก้ปัญหาอาจเป็นวิธีที่ดีที่สุดหรือไม่ก็ได้ แต่คุณรู้ตั้งแต่แรกว่าคุณจะได้ผลลัพธ์แบบไหน คุณใช้ขั้นตอนวิธีการใช้ภาษาการเขียนโปรแกรมที่จะได้รับ (ส่วนหนึ่งของก) โปรแกรม
ตอนนี้ปัญหาบางอย่างเกิดขึ้นได้ยากและคุณอาจไม่สามารถหาทางแก้ไขที่ยอมรับได้ในเวลาที่ยอมรับได้ ในกรณีเช่นนี้คุณมักจะได้รับวิธีแก้ปัญหาที่ไม่เลวร้ายเร็วเกินไปโดยใช้ทางเลือกตามอำเภอใจ (การคาดเดาที่มีการศึกษา) นั่นคือการฮิวริสติก
ฮิวริสติกยังคงเป็นอัลกอริทึมประเภทหนึ่ง แต่จะไม่สำรวจสถานะที่เป็นไปได้ทั้งหมดของปัญหาหรือจะเริ่มต้นด้วยการสำรวจสิ่งที่เป็นไปได้มากที่สุด
ตัวอย่างทั่วไปมาจากเกม เมื่อเขียนโปรแกรมเกมหมากรุกคุณสามารถจินตนาการได้ว่าลองทำทุกวิถีทางในระดับความลึกและใช้ฟังก์ชันการประเมินผลบางอย่างกับกระดาน ฮิวริสติกจะไม่รวมสาขาทั้งหมดที่เริ่มต้นด้วยการเคลื่อนไหวที่ไม่ดีอย่างเห็นได้ชัด
ในบางกรณีคุณไม่ได้ค้นหาวิธีแก้ปัญหาที่ดีที่สุด แต่สำหรับโซลูชันใด ๆ ที่เหมาะสมกับข้อ จำกัด บางประการ การฮิวริสติกที่ดีจะช่วยในการหาวิธีแก้ปัญหาได้ในเวลาอันสั้น แต่ก็อาจไม่พบวิธีใด ๆ หากวิธีแก้ปัญหาเดียวอยู่ในสถานะที่เลือกที่จะไม่ลอง
ปัญหามากมายที่ไม่มีอัลกอริทึมที่มีประสิทธิภาพในการค้นหาวิธีการแก้ปัญหาที่ดีที่สุดเป็นที่ทราบกันดีว่ามีวิธีการฮิวริสติกที่ให้ผลลัพธ์ที่ใกล้เคียงที่สุดอย่างรวดเร็ว
มีบางส่วนที่ทับซ้อนกัน: "อัลกอริทึมทางพันธุกรรม" เป็นคำที่ยอมรับได้ แต่พูดตามตรงก็คือฮิวริสติกส์ไม่ใช่อัลกอริทึม
ฮิวริสติกโดยสรุปคือ "การเดาที่มีการศึกษา" Wikipedia อธิบายไว้อย่างดี ในตอนท้ายวิธีการ "ยอมรับทั่วไป" จะถูกนำมาใช้เป็นวิธีการแก้ปัญหาที่ดีที่สุดสำหรับปัญหาที่ระบุ
ฮิวริสติกเป็นคำคุณศัพท์สำหรับเทคนิคประสบการณ์ที่ช่วยในการแก้ปัญหาการเรียนรู้และการค้นพบ วิธีการฮิวริสติกใช้เพื่อหาวิธีแก้ปัญหาอย่างรวดเร็วโดยหวังว่าจะใกล้เคียงกับคำตอบที่ดีที่สุดหรือ 'โซลูชันที่ดีที่สุด' Heuristics คือ "กฎง่ายๆ" การคาดเดาที่มีการศึกษาการใช้ดุลยพินิจที่เข้าใจง่ายหรือเพียงแค่สามัญสำนึก ฮิวริสติกเป็นวิธีทั่วไปในการแก้ปัญหา Heuristics เป็นคำนามเป็นอีกชื่อหนึ่งสำหรับวิธีการฮิวริสติก
ในแง่ที่ชัดเจนยิ่งขึ้นฮิวริสติกส์หมายถึงกลยุทธ์ที่ใช้ข้อมูลที่สามารถเข้าถึงได้ง่ายแม้ว่าจะใช้อย่างหลวม ๆ ก็ตามข้อมูลเพื่อควบคุมการแก้ปัญหาในมนุษย์และเครื่องจักร
ในขณะที่อัลกอริทึมเป็นวิธีการที่มีชุดคำสั่ง จำกัด ที่ใช้ในการแก้ปัญหา วิธีนี้ได้รับการพิสูจน์ทางคณิตศาสตร์หรือทางวิทยาศาสตร์ว่าใช้ได้กับปัญหานี้ มีวิธีการและการพิสูจน์อย่างเป็นทางการ
อัลกอริทึมฮิวริสติกเป็นอัลกอริทึมที่สามารถสร้างวิธีแก้ปัญหาที่ยอมรับได้สำหรับปัญหาในสถานการณ์จริงหลาย ๆ แบบตามแบบฮิวริสติกทั่วไป แต่ไม่มีการพิสูจน์อย่างเป็นทางการถึงความถูกต้อง
อัลกอริทึมเป็นชุดที่ตนเองมีขั้นตอนโดยขั้นตอนของการดำเนินงานที่จะดำเนินการ4ตีความมักจะเป็นลำดับ จำกัด (คอมพิวเตอร์หรือมนุษย์) คำแนะนำในการกำหนดวิธีการแก้ปัญหาเช่น: มีเส้นทางจาก A ไป B หรือเส้นทางที่เล็กที่สุดระหว่าง A และ B คืออะไรในกรณีหลังคุณอาจพอใจกับโซลูชันทางเลือกที่ 'ใกล้เคียงพอสมควร'
มีบางประเภทของอัลกอริทึมซึ่งอัลกอริทึมฮิวริสติกเป็นหนึ่งเดียว ขึ้นอยู่กับคุณสมบัติ (พิสูจน์แล้ว) ของอัลกอริทึมในกรณีนี้จะอยู่ในหนึ่งในสามประเภทนี้ (หมายเหตุ 1):
โปรดสังเกตว่าอัลกอริทึมการประมาณค่าก็เป็นฮิวริสติกเช่นกัน แต่ด้วยคุณสมบัติที่แข็งแกร่งกว่าที่มีการพิสูจน์แล้วว่ามีผลผูกพันกับโซลูชัน (ค่า) จึงส่งออก
สำหรับปัญหาบางอย่างไม่มีใครเคยพบอัลกอริทึมที่ 'มีประสิทธิภาพ' ในการคำนวณโซลูชันที่เหมาะสมที่สุด (หมายเหตุ 2) หนึ่งในปัญหาเหล่านั้นคือปัญหาพนักงานขายการเดินทางที่รู้จักกันดี อัลกอริทึมของ Christophides สำหรับปัญหาพนักงานขายการเดินทางเช่นเคยถูกเรียกว่าฮิวริสติกเนื่องจากไม่ได้รับการพิสูจน์ว่าอยู่ภายใน 50% ของโซลูชันที่ดีที่สุด อย่างไรก็ตามเนื่องจากได้รับการพิสูจน์แล้วอัลกอริทึมของ Christophides จึงถูกอ้างถึงอย่างถูกต้องมากขึ้นว่าเป็นอัลกอริธึมการประมาณ
เนื่องจากข้อ จำกัด เกี่ยวกับสิ่งที่คอมพิวเตอร์สามารถทำได้จึงเป็นไปไม่ได้ที่จะหาทางออกที่ดีที่สุดได้อย่างมีประสิทธิภาพเสมอไป หากมีโครงสร้างเพียงพอในปัญหาอาจมีวิธีที่มีประสิทธิภาพในการสำรวจพื้นที่โซลูชันแม้ว่าพื้นที่โซลูชันจะมีขนาดใหญ่ (เช่นในปัญหาเส้นทางที่สั้นที่สุด)
โดยทั่วไปแล้วฮิวริสติกจะใช้เพื่อปรับปรุงเวลาในการทำงานของอัลกอริทึมโดยการเพิ่ม "ข้อมูลผู้เชี่ยวชาญ" หรือ "การคาดเดาที่มีการศึกษา" เพื่อเป็นแนวทางในการค้นหา ในทางปฏิบัติการแก้ปัญหาก็อาจจะเป็นย่อยประจำสำหรับขั้นตอนวิธีการที่ดีที่สุดที่จะกำหนดว่าจะมองครั้งแรก
(หมายเหตุ 1) : นอกจากนี้อัลกอริทึมยังมีลักษณะเฉพาะว่าประกอบด้วยองค์ประกอบแบบสุ่มหรือไม่ได้กำหนด อัลกอริทึมที่ดำเนินการในลักษณะเดียวกันเสมอและให้คำตอบเดียวกันเรียกว่าดีเทอร์มินิสติก
(หมายเหตุ 2) : สิ่งนี้เรียกว่าปัญหา P vs NP และปัญหาที่จัดประเภทเป็น NP-complete และ NP-hard ไม่น่าจะมีอัลกอริทึม 'ประสิทธิภาพ' บันทึก; ตามที่ @Kriss กล่าวไว้ในความคิดเห็นยังมีปัญหาประเภทที่ 'แย่กว่า' ซึ่งอาจต้องใช้เวลาหรือพื้นที่ในการคำนวณ
มีหลายคำตอบที่ตอบคำถามบางส่วน ฉันถือว่าคำตอบเหล่านี้ไม่สมบูรณ์และไม่แม่นยำเพียงพอและตัดสินใจที่จะไม่แก้ไขคำตอบที่ยอมรับโดย @Kriss
อันที่จริงฉันไม่คิดว่าจะมีอะไรเหมือนกันมากมายระหว่างพวกเขา อัลกอริทึมบางตัวใช้ฮิวริสติกในตรรกะของตน (มักจะคำนวณน้อยลงหรือได้ผลลัพธ์เร็วขึ้น) โดยปกติแล้วฮิวริสติกจะใช้ในอัลกอริทึมโลภที่เรียกว่า
Heuristics เป็น "ความรู้" บางอย่างที่เราคิดว่าดีที่จะใช้เพื่อให้ได้ตัวเลือกที่ดีที่สุดในอัลกอริทึมของเรา (เมื่อควรเลือก) ตัวอย่างเช่น ... ฮิวริสติกในหมากรุกอาจเป็นได้ (ควรใช้ราชินีของฝ่ายตรงข้ามเสมอถ้าทำได้เพราะคุณรู้ว่านี่คือร่างที่แข็งแกร่งกว่า) ฮิวริสติกส์ไม่ได้รับประกันว่าจะนำคุณไปสู่คำตอบที่ถูกต้อง แต่ (ถ้าสมมติฐานถูกต้อง) มักจะได้รับคำตอบที่ใกล้เคียงที่สุดในเวลาอันสั้นกว่ามาก
ฮิวริสติกเป็นอัลกอริทึมดังนั้นในแง่นี้จึงไม่มีเลยอย่างไรก็ตามฮิวริสติกใช้วิธีการ 'เดา' ในการแก้ปัญหาโดยให้คำตอบที่ 'ดีพอ' แทนที่จะหาวิธีแก้ปัญหาที่ 'ดีที่สุด'
ตัวอย่างที่ดีคือคุณมีปัญหาที่ยากมาก (อ่าน NP-complete) ที่คุณต้องการวิธีแก้ปัญหา แต่ไม่มีเวลามาถึงมันดังนั้นคุณต้องใช้วิธีแก้ปัญหาที่ดีพอตามอัลกอริทึมฮิวริสติกเช่น การหาวิธีแก้ปัญหาพนักงานขายเดินทางโดยใช้อัลกอริทึมทางพันธุกรรม
อัลกอริทึมคือลำดับของการดำเนินการบางอย่างที่กำหนดให้อินพุตคำนวณบางสิ่งบางอย่าง (ฟังก์ชัน) และแสดงผลลัพธ์
อัลกอริทึมอาจให้ค่าที่แน่นอนหรือโดยประมาณ
นอกจากนี้ยังอาจคำนวณค่าสุ่มที่มีความเป็นไปได้สูงใกล้เคียงกับค่าที่แน่นอน
อัลกอริทึมฮิวริสติกใช้ข้อมูลเชิงลึกเกี่ยวกับค่าอินพุตและคำนวณค่าที่ไม่แน่นอน (แต่อาจใกล้เคียงกับค่าที่เหมาะสมที่สุด) ในกรณีพิเศษบางอย่างฮิวริสติกสามารถหาคำตอบที่แน่นอนได้
อัลกอริทึมคือชุดคำสั่งที่กำหนดไว้อย่างชัดเจนในการแก้ปัญหาฮิวริสติกส์เกี่ยวข้องกับการใช้แนวทางการเรียนรู้และการค้นพบเพื่อให้ได้โซลูชัน
ดังนั้นหากคุณรู้วิธีแก้ปัญหาให้ใช้อัลกอริทึม หากคุณต้องการพัฒนาโซลูชันนั่นก็คือการวิเคราะห์พฤติกรรม
ฮิวริสติกมักเป็นการเพิ่มประสิทธิภาพหรือกลยุทธ์ที่มักจะให้คำตอบที่ดีเพียงพอ แต่ไม่ใช่คำตอบที่ดีที่สุดเสมอไป ตัวอย่างเช่นหากคุณต้องการแก้ปัญหาพนักงานขายที่เดินทางด้วยกำลังดุร้ายการทิ้งโซลูชันบางส่วนเมื่อต้นทุนสูงกว่าวิธีการแก้ปัญหาที่ดีที่สุดในปัจจุบันคือการแก้ปัญหา: บางครั้งก็ช่วยได้บางครั้งก็ไม่ได้ผลและแน่นอนไม่ได้ t ปรับปรุงเวลารันตามทฤษฎี (สัญกรณ์ขนาดใหญ่) ของอัลกอริทึม
ฉันคิดว่า Heuristic เป็นข้อ จำกัด ที่ใช้ใน Learning Based Model ใน Artificial Intelligent เนื่องจากสถานะของโซลูชันในอนาคตนั้นยากที่จะคาดเดา
แต่แล้วข้อสงสัยของฉันหลังจากอ่านคำตอบข้างต้นคือ "Heuristic จะนำไปใช้อย่างประสบความสำเร็จโดยใช้เทคนิคการเพิ่มประสิทธิภาพ Stochastic ได้อย่างไรหรือสามารถทำงานเป็นอัลกอริทึมที่สมบูรณ์แบบเมื่อใช้กับ Stochastic Optimization"
หนึ่งในคำอธิบายที่ดีที่สุดที่ฉันอ่านมาจากCode Completeหนังสือเล่มใหญ่ซึ่งตอนนี้ฉันอ้างถึง:
ฮิวริสติกคือเทคนิคที่ช่วยให้คุณมองหาคำตอบ ผลลัพธ์ของมันขึ้นอยู่กับความบังเอิญเพราะฮิวริสติกจะบอกคุณเฉพาะวิธีการมองไม่ใช่สิ่งที่ต้องค้นหา ไม่ได้บอกคุณว่าจะเดินทางจากจุด A ไปยังจุด B โดยตรงได้อย่างไร มันอาจไม่รู้ด้วยซ้ำว่าจุด A และจุด B อยู่ที่ไหน ผลก็คือฮิวริสติกคืออัลกอริทึมในชุดตัวตลก คาดการณ์ได้น้อยกว่าสนุกกว่าและไม่มีการรับประกันคืนเงินภายใน 30 วัน
นี่คืออัลกอริทึมสำหรับการขับรถไปที่บ้านของใครบางคน: ใช้ทางหลวงหมายเลข 167 ทางใต้ไปยัง Puy-allup ใช้ทางออก South Hill Mall และขับรถขึ้นเขา 4.5 ไมล์ เลี้ยวขวาที่ไฟข้างร้านขายของชำจากนั้นเลี้ยวซ้ายแรก เลี้ยวเข้าทางรถแล่นของบ้านสีแทนหลังใหญ่ทางซ้ายมือที่ 714 North Cedar
นี่คือคำอธิบายสำหรับการไปบ้านของใครบางคน: ค้นหาจดหมายฉบับสุดท้ายที่เราส่งถึงคุณ ขับรถไปในเมืองตามที่อยู่สำหรับส่งคืน เข้าเมืองเมื่อไหร่ให้ถามใครว่าบ้านเราอยู่ไหน ทุกคนรู้จักเรามีคนยินดีที่จะช่วยเหลือคุณ หากคุณไม่พบใครโทรหาเราจากโทรศัพท์สาธารณะแล้วเราจะไปหาคุณ
ความแตกต่างระหว่างอัลกอริทึมและฮิวริสติกนั้นมีความละเอียดอ่อนและคำทั้งสองแบบโอเวอร์แลปค่อนข้าง สำหรับวัตถุประสงค์ของหนังสือเล่มนี้ความแตกต่างที่สำคัญระหว่างทั้งสองคือระดับของทิศทางจากการแก้ปัญหา อัลกอริทึมให้คำแนะนำโดยตรง ฮิวริสติกจะบอกคุณถึงวิธีค้นหาคำแนะนำสำหรับตัวคุณเองหรืออย่างน้อยที่สุดก็ควรหาคำแนะนำเหล่านั้น
พวกเขาหาวิธีแก้ปัญหาโดยไม่ต้องมีการรับประกันใด ๆ เกี่ยวกับคุณภาพของโซลูชันที่พบเห็นได้ชัดว่าการพัฒนาฮิวริสติกเป็นเพียงพหุนามเท่านั้น การประยุกต์ใช้วิธีการเหล่านี้เหมาะสำหรับแก้ปัญหาในโลกแห่งความเป็นจริงหรือปัญหาใหญ่ ๆ ที่น่าอึดอัดใจจากมุมมองของการคำนวณซึ่งสำหรับพวกเขานั้นไม่มีแม้แต่อัลกอริทึมที่สามารถค้นหาคำตอบโดยประมาณในเวลาพหุนามได้