การจำแนกประเภทของอัลกอริทึมแบบสุ่ม


14

จากWikipediaเกี่ยวกับอัลกอริทึมแบบสุ่ม

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

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

คำตอบ:


12
  1. ตัวอย่างของอัลกอริทึมดังกล่าวคือการจัดเรียงแบบด่วนแบบสุ่มซึ่งคุณจะอนุญาตรายการหรือสุ่มเลือกค่า pivot จากนั้นใช้การเรียงแบบด่วนตามปกติ Quick Sort มีกรณีที่เลวร้ายที่สุดที่ใช้เวลาแต่ในรายการแบบสุ่มมีเวลาทำงานที่คาดหวังของดังนั้นมันจะยุติหลังจากขั้นตอน แต่เราสามารถคาดหวังว่าอินสแตนซ์แบบสุ่มที่จะยุติหลังจากขั้นตอนมักจะมีคำตอบที่ถูกต้องเสมอO(n2)O(nเข้าสู่ระบบn)O(n2)O(nเข้าสู่ระบบn)

  2. สิ่งนี้ให้อัลกอริทึมย่อยของ Las Vegas ลาสเวกัสอัลกอริทึมยังอนุญาตให้มีความเป็นไปได้ที่ (มีความน่าจะเป็นต่ำ) มันอาจไม่ยุติเลย - ไม่ใช่แค่จบลงด้วยเวลาที่มากขึ้นอีกนิด

  3. สิ่งเหล่านี้กลับกลายเป็นอัลกอริธึมประเภท Monte Carlo จริงๆซึ่งคำตอบอาจไม่ถูกต้อง (ที่มีความน่าจะเป็นต่ำ) ซึ่งอย่างน้อยก็เป็นแนวคิดที่แตกต่างจากที่อาจจะไม่ตอบรับ

มีรายละเอียดมากมายที่ฉันได้ทิ้งไว้แน่นอนคุณอาจต้องการค้นหาคลาสความซับซ้อน ZPP, RP และ BPP ซึ่งทำให้ความคิดเหล่านี้เป็นทางการ


ขอบคุณ! อัลกอริธึมแบบสุ่มอัลกอริธึม Monte Carlo และอัลกอริธึมน่าจะเป็นแนวคิดเดียวกันหรือไม่
ทิม

ใช่แม้ว่าอัลกอรึทึมของมอนติคาร์โลนั้นเป็นอัลกอริธึมที่น่าจะเป็นประเภทเฉพาะ (ตรงกับคลาส BPP - มีคลาสอื่นเช่น PP ซึ่งน่าจะเป็น แต่น่าจะ! - มีมากกว่า BPP) ฉันไม่แน่ใจว่าทำไมประโยคนั้นถึงอยู่ในบทความวิกิพีเดียอาจมีบางคนสับสนกับการวิเคราะห์ความน่าจะเป็นซึ่งเป็นสิ่งที่แตกต่าง
ลุคแมททีสัน

8

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

แตกต่างที่สำคัญจะต้องมีการทำขึ้นระหว่างขั้นตอนวิธี Monte Carloและอัลกอริทึมลาสเวกั ขั้นตอนวิธีลาสเวกัสเป็นอัลกอริธึมแบบสุ่มที่มักจะตอบกลับถูกต้องเสมอ แต่เวลาทำงานของพวกเขาขึ้นอยู่กับการโยนเหรียญ ตัวอย่างคืออัลกอริธึมจำนวนเต็มแฟคตอริ่ง - พวกมันจะคืนค่าปัจจัยที่ถูกต้องเสมอ แต่เวลาทำงานนั้นขึ้นอยู่กับการสุ่ม เมื่อระบุเวลาทำงานของอัลกอริธึมลาสเวกัส (พูดถึงอัลกอริธึมการแยกตัว) เราจะระบุเวลาทำงานที่คาดหวัง หากเราโชคไม่ดีอัลกอริทึมสามารถทำงานได้นานกว่า

ในทางตรงกันข้ามอัลกอริทึม Monte Carlo เป็นอัลกอริทึมแบบสุ่มซึ่งมีการตั้งค่าเวลาทำงานก่อนเวลา อัลกอริทึมดังกล่าวสามารถทำผิดพลาดได้ แต่โดยทั่วไปความน่าจะเป็นข้อผิดพลาดต่ำมาก ตัวอย่างที่ดีคือการทดสอบความน่าจะเป็นแบบดั้งเดิม อัลกอริทึมเหล่านี้เร็วมาก แต่อาจทำให้เกิดข้อผิดพลาดได้ อย่างไรก็ตามความน่าจะเป็นข้อผิดพลาดนั้นต่ำในทางปฏิบัติพวกเขาไม่เคยทำผิดพลาด

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


คุณสามารถอ้างอิงการอ้างอิงสำหรับคำจำกัดความเหล่านี้ได้หรือไม่?
R. Chopin

Wikipedia ควรมีการอ้างอิงที่เกี่ยวข้อง
Yuval Filmus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.