กลับไปหน้าบทความ

อ่าน 11 นาที

อัลกอริทึมแบบสุ่ม

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

อัลกอริทึมแบบสุ่ม

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

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

ในทางปฏิบัติทั่วไป อัลกอริทึมแบบสุ่มมักจะใช้ตัวสร้างเลขสุ่มเทียมแทนแหล่งกำเนิดบิตสุ่มที่แท้จริง ซึ่งการใช้งานในลักษณะนี้อาจเบี่ยงเบนจากพฤติกรรมทางทฤษฎีและข้อรับประกันทางคณิตศาสตร์ที่คาดหวังไว้ ซึ่งอาจขึ้นอยู่กับการมีอยู่ของตัวสร้างเลขสุ่มที่แท้จริงในอุดมคติ

แรงจูงใจ

เพื่อเป็นตัวอย่างกระตุ้นความคิด ลองพิจารณาปัญหาการค้นหาค่า ' a ' ในอาร์เรย์ที่มีองค์ประกอบ n ตัว

อินพุต : อาร์เรย์ที่มี องค์ประกอบ n ≥ 2 ตัว โดยครึ่งหนึ่งเป็น ' a ' และอีกครึ่งหนึ่งเป็น ' b '

ผลลัพธ์ : ค้นหาตัวอักษร ' a ' ในอาร์เรย์

เราได้นำเสนออัลกอริทึมสองเวอร์ชัน ได้แก่อัลกอริทึมลาสเวกัสและอัลกอริทึมมอนเตคาร์โล

อัลกอริทึมลาสเวกัส:

findingA_LV ( array A , n ) begin repeat สุ่มเลือกองค์ประกอบหนึ่งตัวจากn องค์ประกอบจนกว่าจะพบ'a ' end

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

เนื่องจากเป็นค่าคงที่ เวลาการทำงานโดยเฉลี่ยเมื่อเรียกใช้งานหลายครั้งจึงเป็น. (ดูสัญลักษณ์ Big Theta )

อัลกอริทึมมอนเตคาร์โล:

findingA_MC ( array A , n , k ) begin i := 0 repeat สุ่มเลือกองค์ประกอบหนึ่งตัวจากn องค์ประกอบi : = i + 1 จนกว่าi = k หรือพบ'a ' end

ถ้า พบตัวอักษร' a ' แสดงว่าอัลกอริทึมทำงานสำเร็จ มิฉะนั้นอัลกอริทึมจะล้มเหลว หลังจากวนซ้ำ kครั้ง ความน่าจะเป็นที่จะพบตัวอักษร ' a ' คือ:

อัลกอริทึมนี้ไม่รับประกันความสำเร็จ แต่เวลาในการทำงานมีขอบเขตจำกัด จำนวนรอบการทำซ้ำจะน้อยกว่าหรือเท่ากับ k เสมอ เมื่อกำหนดให้ k เป็นค่าคงที่ เวลาในการทำงาน (ทั้งที่คาดหวังและแบบสัมบูรณ์) คือ.

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

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

ความซับซ้อนในการคำนวณ

ทฤษฎีความซับซ้อนของการคำนวณจำลองอัลกอริทึมแบบสุ่มเป็นเครื่องจักรทัวริงเชิงความน่าจะเป็น มีการพิจารณาทั้ง อัลกอริทึม ลาสเวกั ส และมอนเตคาร์โล และมีการศึกษา คลาสความซับซ้อน หลายประเภท คลาส ความซับซ้อนแบบสุ่มพื้นฐานที่สุดคือRPซึ่งเป็นคลาสของปัญหาการตัดสินใจที่มีอัลกอริทึมแบบสุ่มที่มีประสิทธิภาพ (เวลาพหุนาม) (หรือเครื่องจักรทัวริงเชิงความน่าจะเป็น) ซึ่งรู้จักกรณีที่เป็น NO ด้วยความแน่นอนอย่างสมบูรณ์ และรู้จักกรณีที่เป็น YES ด้วยความน่าจะเป็นอย่างน้อย 1/2 คลาสส่วนเติมเต็มของ RP คือ co-RP คลาสปัญหาที่มีอัลกอริทึม (อาจไม่สิ้นสุด) ที่มี เวลาการทำงานเฉลี่ยเป็น พหุนามและ ผลลัพธ์ถูกต้องเสมอเรียกว่าอยู่ในZPP

กลุ่มปัญหาที่อนุญาตให้ระบุทั้งคำตอบ "ใช่" และ "ไม่ใช่" ได้โดยมีข้อผิดพลาดบ้าง เรียกว่าBPP ( Browser Process) กลุ่มปัญหานี้เปรียบเสมือนP ในรูปแบบสุ่ม กล่าว คือ BPP เป็นตัวแทนของกลุ่มอัลกอริธึมแบบสุ่มที่มีประสิทธิภาพ

ประวัติศาสตร์ยุคแรก

การเรียงลำดับ

อัลกอริทึม QuickSortถูกค้นพบโดยTony Hoareในปี พ.ศ. 2492 และตีพิมพ์เผยแพร่ในเวลาต่อมาในปี พ.ศ. 2504 [ 4 ]ในปีเดียวกันนั้น Hoare ได้ตีพิมพ์อัลกอริทึม QuickSelect [ 5 ] ซึ่งค้นหาองค์ประกอบค่ามัธยฐานของรายการในเวลาเชิงเส้นที่คาดหวัง จนถึงปี พ.ศ. 2516 ยังคงเป็นที่ถกเถียงกันอยู่ว่ามีอัลกอริทึมเชิงเส้นแบบกำหนดได้หรือไม่[ 6 ]

ทฤษฎีจำนวน

ในปี พ.ศ. 2460 Henry Cabourn Pocklingtonได้นำเสนออัลกอริทึมแบบสุ่มที่เรียกว่าอัลกอริทึมของ Pocklingtonสำหรับการค้นหารากที่สอง ของ โมดูลัสจำนวนเฉพาะ อย่างมีประสิทธิภาพ [ 7 ] ในปี พ.ศ. 2513 Elwyn Berlekampได้นำเสนออัลกอริทึมแบบสุ่มสำหรับการคำนวณรากของพหุนามเหนือฟิลด์จำกัดอย่างมีประสิทธิภาพ[ 8 ]ในปี พ.ศ. 2520 Robert M. SolovayและVolker Strassen ได้ค้นพบ การทดสอบความเป็นจำนวนเฉพาะแบบสุ่มในเวลาพหุ นาม (เช่น การกำหนดความเป็นจำนวนเฉพาะของจำนวน) ไม่นานหลังจากนั้นMichael O. Rabin ได้แสดงให้เห็นว่า การทดสอบความเป็นจำนวนเฉพาะของ Millerในปี พ.ศ. 2519 สามารถเปลี่ยนเป็นอัลกอริทึมแบบสุ่มในเวลาพหุนามได้เช่นกัน ในขณะนั้น ยังไม่มีอัลกอริทึมเชิงกำหนดที่ พิสูจน์ได้ว่าใช้เวลาพหุนาม สำหรับการทดสอบความเป็นจำนวนเฉพาะ

โครงสร้างข้อมูล

หนึ่งในโครงสร้างข้อมูลแบบสุ่มที่เก่าแก่ที่สุดคือตารางแฮช ซึ่ง Hans Peter LuhnจากIBMได้แนะนำในปี 1953 [ 9 ] ตารางแฮชของ Luhn ใช้การเชื่อมโยงเพื่อแก้ไขการชนกัน และยังเป็นหนึ่งในแอปพลิเคชันแรกๆ ของรายการเชื่อมโยง อีก ด้วย[ 9 ]ต่อมาในปี 1954 Gene Amdahl , Elaine M. McGraw , Nathaniel RochesterและArthur SamuelจากIBM Researchได้แนะนำการสอบถามเชิงเส้น[ 9 ]แม้ว่าAndrey Ershovจะมีแนวคิดเดียวกันนี้โดยอิสระในปี 1957 [ 9 ]ในปี 1962 Donald Knuthได้ทำการวิเคราะห์การสอบถามเชิงเส้นอย่างถูกต้องเป็นครั้งแรก[ 9 ]แม้ว่าบันทึกที่มีการวิเคราะห์ของเขาจะไม่ได้ถูกตีพิมพ์จนกระทั่งอีกนานต่อมา[ 10 ]การวิเคราะห์ที่ตีพิมพ์ครั้งแรกเป็นผลงานของ Konheim และ Weiss ในปี 1966 [ 11 ]

งานในช่วงแรกเกี่ยวกับตารางแฮชนั้นสันนิษฐานว่าสามารถเข้าถึงฟังก์ชันแฮชแบบสุ่มได้อย่างสมบูรณ์ หรือสันนิษฐานว่าคีย์เองก็เป็นแบบสุ่ม[ 9 ]ในปี พ.ศ. 2522 คาร์เตอร์และเวกแมนได้แนะนำฟังก์ชันแฮชสากล [ 12 ] ซึ่งพวกเขาแสดงให้เห็น ว่าสามารถใช้ในการสร้างตารางแฮชแบบลูกโซ่โดยมีเวลาเฉลี่ยคงที่ต่อการดำเนินการ

งานวิจัยในช่วงแรกเกี่ยวกับโครงสร้างข้อมูลแบบสุ่มยังขยายไปไกลกว่าตารางแฮช ในปี 1970 Burton Howard Bloom ได้นำเสนอโครงสร้างข้อมูลสมาชิกโดยประมาณที่เรียกว่าBloom filter [ 13 ]ในปี 1989 Raimund SeidelและCecilia R. Aragonได้นำเสนอต้นไม้ค้นหาแบบสมดุลแบบสุ่มที่เรียกว่าtreap [ 14 ]ในปีเดียวกันนั้น William Pughได้นำเสนอต้นไม้ค้นหาแบบสุ่มอีกแบบหนึ่งที่เรียกว่าskip list [ 15 ]

การใช้งานโดยนัยในคณิตศาสตร์เชิงการจัดเรียง

ก่อนที่อัลกอริธึมแบบสุ่มจะแพร่หลายในวิทยาศาสตร์คอมพิวเตอร์Paul Erdősได้ทำให้การใช้การสร้างแบบสุ่มเป็นเทคนิคทางคณิตศาสตร์เพื่อพิสูจน์การมีอยู่ของวัตถุทางคณิตศาสตร์เป็นที่นิยม เทคนิคนี้กลายเป็นที่รู้จักในชื่อวิธีการเชิงความน่าจะเป็น [ 16 ] Erdősได้นำวิธีการเชิงความน่าจะเป็นมาประยุกต์ใช้ครั้งแรกในปี 1947 โดยใช้การสร้างแบบสุ่มอย่างง่ายเพื่อพิสูจน์การมีอยู่ของกราฟ Ramsey [ 17 ]เขาได้ใช้อัลกอริธึมแบบสุ่มที่ซับซ้อนกว่าในปี 1959 เพื่อพิสูจน์การมีอยู่ของกราฟที่มีเส้นรอบวงและจำนวนสีสูง[ 18 ] [ 16 ]

ตัวอย่าง

เรียงลำดับเร็ว

QuickSortเป็นอัลกอริทึมที่คุ้นเคยและใช้กันทั่วไป ซึ่งความสุ่มสามารถเป็นประโยชน์ได้ อัลกอริทึมเวอร์ชันเชิงกำหนดหลายเวอร์ชันต้องการ เวลา O ( )ในการเรียง ลำดับตัวเลข nตัวสำหรับกลุ่มอินพุตที่กำหนดไว้อย่างชัดเจน (เช่น อาร์เรย์ที่เรียงลำดับแล้ว) โดยกลุ่มอินพุตเฉพาะที่ทำให้เกิดพฤติกรรมนี้จะถูกกำหนดโดยโปรโตคอลสำหรับการเลือกตัวหลัก อย่างไรก็ตาม หากอัลกอริทึมเลือกองค์ประกอบตัวหลักแบบสุ่มอย่างสม่ำเสมอ จะมีโอกาสสูงที่จะเสร็จสิ้นใน เวลา O ( n  log  n ) โดยไม่คำนึงถึงลักษณะของอินพุต

การสร้างแบบเพิ่มทีละน้อยแบบสุ่มในเรขาคณิต

ในเรขาคณิตเชิงคำนวณเทคนิคมาตรฐานในการสร้างโครงสร้าง เช่นconvex hullหรือDelaunay triangulationคือการสลับตำแหน่งจุดอินพุตแบบสุ่ม แล้วแทรกจุดเหล่านั้นทีละจุดลงในโครงสร้างที่มีอยู่ การสุ่มทำให้มั่นใจได้ว่าจำนวนการเปลี่ยนแปลงที่คาดหวังของโครงสร้างที่เกิดจากการแทรกนั้นน้อย ดังนั้นเวลาการทำงานที่คาดหวังของอัลกอริทึมจึงสามารถจำกัดจากด้านบนได้ เทคนิคนี้เรียกว่าการสร้างแบบเพิ่มทีละน้อยแบบสุ่ม[ 19 ]

ตัดผมสั้น

อินพุต : กราฟG ( V , E )

ผลลัพธ์ : การตัดแบ่งจุดยอดออกเป็นLและRโดยมีจำนวนขอบน้อยที่สุดระหว่าง LและR

โปรดจำไว้ว่า การยุบรวมโหนดสองโหนดuและvในกราฟ (หลายโหนด) จะได้โหนดใหม่u ' ซึ่งมีขอบที่เป็นผลรวมของขอบที่เชื่อมต่อกับuหรือvยกเว้นขอบที่เชื่อมต่อระหว่างuและvรูปที่ 1 แสดงตัวอย่างการยุบรวมจุดยอดAและBหลังจากการยุบรวม กราฟที่ได้อาจมีขอบขนาน แต่ไม่มีวงวนในตัวเอง

รูปที่ 2: การทำงานของอัลกอริทึมของ Karger บนกราฟที่มี 10 จุดยอดประสบความสำเร็จ รอยตัดขั้นต่ำมีขนาด 3 และแสดงด้วยสีของจุดยอด
รูปที่ 1: การหดตัวของจุดยอด A และ B

อัลกอริทึมพื้นฐาน ของ Karger [ 20 ]

เริ่ม i = 1 ทำซ้ำทำซ้ำ เลือกขอบแบบสุ่ม (u,v) ∈ E ใน G แทนที่ u และ v ด้วยคำย่อ u' จนกระทั่งเหลือเพียง 2 โหนด รับผลลัพธ์การตัดที่สอดคล้องกัน C i i = i + 1 จนกระทั่ง i = m แสดงผลการตัดขั้นต่ำระหว่าง C 1 , C 2 , ..., C m . end

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

บทตั้งที่ 1 ให้kเป็นขนาดการตัดขั้นต่ำ และให้C = { e 1 , e 2 , ..., e k }เป็นการตัดขั้นต่ำ ถ้าในระหว่างการวนซ้ำครั้งที่iไม่มีขอบeC ใด ถูกเลือกสำหรับการหดตัว ดังนั้นC i = C .

การพิสูจน์

ถ้าGไม่เชื่อมต่อกันGสามารถแบ่งออกเป็นLและRได้โดยไม่มีขอบเชื่อมระหว่างกัน ดังนั้น min cut ในกราฟที่ไม่เชื่อมต่อกันคือ 0 ทีนี้ สมมติว่าGเชื่อมต่อกันแล้ว ให้V = LRเป็นการแบ่งส่วนของVที่เกิดจากC  : C = { { u , v } ∈ E  : uL , vR } (ซึ่งกำหนดไว้อย่างดีเนื่องจากGเชื่อมต่อกันแล้ว) พิจารณาขอบ { u , v } ของCในตอนเริ่มต้นuและ v เป็นจุดยอดที่แตกต่างกันตราบใดที่เราเลือกขอบuและv จะไม่รวมกัน ดังนั้น ในตอนท้ายของอัลกอริทึม เราจะ มีโหนดประกอบสองโหนดที่ครอบคลุมกราฟทั้งหมด โหนดหนึ่งประกอบด้วยจุดยอดของLและอีกโหนดหนึ่งประกอบด้วยจุดยอดของRดังแสดงในรูปที่ 2 ขนาดของ min cut คือ 1 และC = {( A , B )} ถ้าเราไม่เลือก ( A , B ) สำหรับการหดตัว เราจะได้ค่าตัดขั้นต่ำ

บทพิสูจน์ย่อยที่ 2 ถ้าGเป็นมัลติกราฟที่มีpจุดยอด และมีขนาด min cut เท่ากับ kแล้วGจะมีขอบอย่างน้อยpk /2 เส้น

การพิสูจน์

เนื่องจาก min cut คือkดังนั้นทุกจุดยอดvจะต้องมี degree( v ) ≥ kด้วยเหตุนี้ ผลรวมของดีกรีจึงมีค่าอย่างน้อยpkแต่เป็นที่ทราบกันดีว่าผลรวมของดีกรีของจุดยอดเท่ากับ 2| E | ดังนั้นทฤษฎีบทเสริมจึงเป็นไปตามนี้

การวิเคราะห์อัลกอริทึม

ความน่าจะเป็นที่อัลกอริทึมจะสำเร็จคือ 1 ลบด้วยความน่าจะเป็นที่ความพยายามทั้งหมดล้มเหลว เนื่องจากความเป็นอิสระ ความน่าจะเป็นที่ความพยายามทั้งหมดล้มเหลวคือ

จากเลมมาที่ 1 ความน่าจะเป็นที่C i = Cคือความน่าจะเป็นที่ไม่มีขอบใดของCถูกเลือกในระหว่างการวนซ้ำครั้งที่ iพิจารณาลูปภายในและให้G jแทนกราฟหลังจากมีการหดตัวของขอบj ครั้ง โดยที่ j ∈ {0, 1, …, n − 3} G j มีจุด ยอด njจุด เราใช้กฎลูกโซ่ของความเป็นไปได้แบบมีเงื่อนไข ความน่าจะเป็นที่ขอบที่เลือกในการวนซ้ำครั้งที่jไม่อยู่ในCเมื่อกำหนดว่าไม่มีขอบใดของCถูกเลือกมาก่อน คือโปรดทราบว่าG jยังคงมี min cut ที่มีขนาดk ดังนั้นจากเลมมาที่ 2 มันจึงยังคงมี ขอบ อย่างน้อย

ดังนั้น, .

ดังนั้นตามกฎลูกโซ่ ความน่าจะเป็นที่จะพบค่าตัดต่ำสุดCคือ

การยกเลิกทำให้ได้ดังนั้นความน่าจะเป็นที่อัลกอริทึมจะสำเร็จอย่างน้อยที่สุดคือสำหรับสิ่งนี้เทียบเท่ากับอัลกอริทึมจะค้นหา min cut ด้วยความน่าจะเป็นในเวลา

การยกเลิกการสุ่ม

ความสุ่มสามารถมองได้ว่าเป็นทรัพยากร เช่นเดียวกับพื้นที่และเวลา การลดความสุ่มจึงเป็นกระบวนการของการกำจัดความสุ่ม (หรือใช้ให้น้อยที่สุดเท่าที่จะเป็นไปได้) [ 21 ] [ 22 ]ปัจจุบันยังไม่เป็นที่ทราบแน่ชัดว่าอัลกอริธึมทั้งหมดสามารถลดความสุ่มได้โดยไม่ทำให้เวลาในการทำงานเพิ่มขึ้นอย่างมีนัยสำคัญหรือไม่[ 23 ]ตัวอย่างเช่น ในความซับซ้อนของการคำนวณยังไม่ทราบว่าP = BPPหรือ ไม่ [ 23 ]กล่าวคือ เราไม่ทราบว่าเราสามารถนำอัลกอริธึมแบบสุ่มใดๆ ที่ทำงานในเวลาพหุนามด้วยความน่าจะเป็นของข้อผิดพลาดเล็กน้อย และลดความสุ่มเพื่อให้ทำงานในเวลาพหุนามโดยไม่ต้องใช้ความสุ่มได้หรือไม่

มีวิธีการเฉพาะที่สามารถนำมาใช้เพื่อลดความเป็นสุ่มของอัลกอริทึมแบบสุ่มบางอย่างได้:

ที่ซึ่งความสุ่มช่วยได้

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

  • จากตัวอย่างเริ่มต้นที่กระตุ้นให้เกิดความคิด: เมื่อกำหนดสตริงที่มีความยาวแบบเลขชี้กำลัง 2k ตัวอักษร โดยครึ่งหนึ่งเป็น a และอีกครึ่งหนึ่งเป็น b เครื่องจักรแบบเข้าถึงแบบสุ่มจะต้องใช้การค้นหา 2k −1ครั้งในกรณีที่เลวร้ายที่สุดเพื่อหาดัชนีของaหากอนุญาตให้เลือกแบบสุ่ม เครื่องจักรจะสามารถแก้ปัญหานี้ได้ในจำนวนการค้นหาที่คาดหวังเป็นพหุนาม
  • วิธีการตามธรรมชาติในการดำเนินการคำนวณเชิงตัวเลขในระบบฝังตัวหรือระบบไซเบอร์-กายภาพคือการให้ผลลัพธ์ที่ประมาณค่าผลลัพธ์ที่ถูกต้องด้วยความน่าจะเป็นสูง (หรือการคำนวณที่ถูกต้องโดยประมาณที่น่าจะเป็นไปได้ (PACC)) ปัญหาที่ยากที่เกี่ยวข้องกับการประเมินการสูญเสียความคลาดเคลื่อนระหว่างการคำนวณโดยประมาณและการคำนวณที่ถูกต้องสามารถแก้ไขได้อย่างมีประสิทธิภาพโดยการใช้การสุ่ม[ 25 ]
  • ในความซับซ้อนของการสื่อสารความเท่าเทียมกันของสตริงสองสตริงสามารถตรวจสอบได้ด้วยความน่าเชื่อถือในระดับหนึ่งโดยใช้บิตของการสื่อสารด้วยโปรโตคอลแบบสุ่ม โปรโตคอลแบบกำหนดใดๆ ก็ตามต้องการบิตหากป้องกันคู่ต่อสู้ที่แข็งแกร่ง[ 26 ]
  • ปริมาตรของวัตถุนูนสามารถประมาณได้ด้วยอัลกอริทึมแบบสุ่มด้วยความแม่นยำตามอำเภอใจในเวลาพหุนาม[ 27 ] BárányและFürediแสดงให้เห็นว่าไม่มีอัลกอริทึมแบบกำหนดที่สามารถทำเช่นเดียวกันได้[ 28 ]นี่เป็นความจริงโดยไม่มีเงื่อนไข กล่าวคือโดยไม่ต้องอาศัยสมมติฐานทางทฤษฎีความซับซ้อนใดๆ โดยถือว่าวัตถุนูนสามารถสอบถามได้เฉพาะในฐานะกล่องดำเท่านั้น
  • ตัวอย่างเชิงทฤษฎีที่ซับซ้อนกว่าของสถานที่ที่ความสุ่มดูเหมือนจะช่วยได้คือคลาสIP IP ประกอบด้วยภาษาทั้งหมดที่สามารถยอมรับได้ (ด้วยความน่าจะเป็นสูง) โดยการโต้ตอบที่ยาวพอลินอมิอัลระหว่างผู้พิสูจน์ที่ทรงพลังทั้งหมดและผู้ตรวจสอบที่ใช้ขั้นตอนวิธี BPP IP = PSPACE [ 29 ] อย่างไรก็ตาม หากจำเป็นต้อง ให้ผู้ตรวจสอบเป็นแบบกำหนดได้ IP = NP
  • ในเครือข่ายปฏิกิริยาเคมี (ชุดปฏิกิริยาที่จำกัด เช่น A+B → 2C + D ที่ดำเนินการกับโมเลกุลจำนวนจำกัด) ความสามารถในการไปถึงสถานะเป้าหมายที่กำหนดจากสถานะเริ่มต้นสามารถตัดสินได้ ในขณะที่แม้แต่การประมาณความน่าจะเป็นของการไปถึงสถานะเป้าหมายที่กำหนด (โดยใช้ความน่าจะเป็นตามความเข้มข้นมาตรฐานสำหรับปฏิกิริยาที่จะเกิดขึ้นต่อไป) ก็ไม่สามารถตัดสินได้ โดยเฉพาะอย่างยิ่ง เครื่องจักรทัวริงแบบจำกัดสามารถจำลองได้ด้วยความน่าจะเป็นสูงตามอำเภอใจที่จะทำงานได้อย่างถูกต้องตลอดเวลา ก็ต่อเมื่อใช้เครือข่ายปฏิกิริยาเคมีแบบสุ่มเท่านั้น ด้วยเครือข่ายปฏิกิริยาเคมีแบบไม่กำหนดอย่างง่าย (ปฏิกิริยาใดๆ ก็สามารถเกิดขึ้นต่อไปได้) พลังการคำนวณจะถูกจำกัดไว้ที่ฟังก์ชันเรียกซ้ำแบบดั้งเดิม[ 30 ]

ดูเพิ่มเติม

หมายเหตุ

  1. ^ Hoare, CAR (กรกฎาคม 1961). "Algorithm 64: Quicksort". Commun. ACM . 4 (7): 321–. doi : 10.1145/366622.366644 . ISSN  0001-0782 .
  2. ^ Kudelić, Robert (2016-04-01). "อัลกอริทึมแบบสุ่มมอนเตคาร์โลสำหรับปัญหาชุดส่วนโค้งป้อนกลับขั้นต่ำ". Applied Soft Computing . 41 : 235– 246. doi : 10.1016/j.asoc.2015.12.018 .
  3. "ในการทดสอบความเป็นจำนวนเฉพาะของจำนวนขนาดใหญ่มากที่เลือกแบบสุ่ม โอกาสที่จะพบค่าที่ทำให้การทดสอบของแฟร์มาต์ ผิดพลาด นั้นน้อยกว่าโอกาสที่รังสีคอสมิกจะทำให้คอมพิวเตอร์ทำงานผิดพลาดในการดำเนินการตามอัลกอริทึมที่ 'ถูกต้อง' การพิจารณาว่าอัลกอริทึมไม่เหมาะสมด้วยเหตุผลแรกแต่ไม่ใช่ด้วยเหตุผลที่สอง แสดงให้เห็นถึงความแตกต่างระหว่างคณิตศาสตร์และวิศวกรรม" Hal Abelsonและ Gerald J. Sussman (1996).โครงสร้างและการตีความโปรแกรมคอมพิวเตอร์สำนักพิมพ์ MIT ส่วนที่ 1.2 เก็บถาวรเมื่อ 2006-09-03 ที่ Wayback Machine
  4. ^ Hoare, CAR (กรกฎาคม 1961). "อัลกอริทึม 64: Quicksort" . Communications of the ACM . 4 (7): 321. doi : 10.1145/366622.366644 . ISSN 0001-0782 . 
  5. ^ Hoare, CAR (กรกฎาคม 1961). "อัลกอริทึม 65: ค้นหา" . การสื่อสารของ ACM . 4 (7): 321– 322. doi : 10.1145/366622.366647 . ISSN 0001-0782 . 
  6. ^ Blum, Manuel; Floyd, Robert W.; Pratt, Vaughan; Rivest, Ronald L.; Tarjan, Robert E. (สิงหาคม 1973). "ขอบเขตเวลาสำหรับการเลือก" . วารสารวิทยาการคอมพิวเตอร์และระบบ . 7 (4): 448– 461. doi : 10.1016/S0022-0000(73)80033-9 .
  7. ^ Williams, HC ; Shallit, JO (1994), "การแยกตัวประกอบจำนวนเต็มก่อนคอมพิวเตอร์", ใน Gautschi, Walter (บรรณาธิการ), คณิตศาสตร์ของการคำนวณ 1943–1993: ครึ่งศตวรรษของคณิตศาสตร์เชิงคำนวณ; บทความจากการประชุมสัมมนาเรื่องการวิเคราะห์เชิงตัวเลขและการประชุมสัมมนาย่อยเรื่องทฤษฎีจำนวนเชิงคำนวณที่จัดขึ้นในแวนคูเวอร์ รัฐบริติชโคลัมเบีย วันที่ 9–13 สิงหาคม 1993 , รายงานการประชุมสัมมนาในคณิตศาสตร์ประยุกต์ เล่มที่ 48, สมาคมคณิตศาสตร์อเมริกัน, พรอวิเดนซ์, โรดไอแลนด์, หน้า  481–531 , doi : 10.1090/psapm/048/1314885 , ISBN 978-0-8218-0291-5, MR  1314885ดูหน้า 504 "บางทีพ็อคลิงตันก็สมควรได้รับเครดิตในฐานะผู้คิดค้นอัลกอริทึมแบบสุ่มด้วย"
  8. ^ Berlekamp, ​​ER (1971). "การแยกตัวประกอบพหุนามบนฟิลด์จำกัดขนาดใหญ่" . รายงานการประชุมสัมมนา ACM ครั้งที่สองว่าด้วยการจัดการเชิงสัญลักษณ์และพีชคณิต - SYMSAC '71 . ลอสแอนเจลิส แคลิฟอร์เนีย สหรัฐอเมริกา: สำนักพิมพ์ ACM. หน้า 223. doi : 10.1145/800204.806290 . ISBN 9781450377867S2CID 6464612 ​
  9. ^ a b c d e f Knuth, Donald E. (1998). ศิลปะแห่งการเขียนโปรแกรมคอมพิวเตอร์ เล่ม 3: (ฉบับที่ 2) การเรียงลำดับและการค้นหาสหรัฐอเมริกา: Addison Wesley Longman Publishing Co., Inc. หน้า  536–549 . ISBN 978-0-201-89685-5.
  10. ^ Knuth, Donald (1963), Notes on "Open" Addressing , เก็บถาวรจากต้นฉบับเมื่อ 2016-03-03
  11. ^ Konheim, Alan G.; Weiss, Benjamin (พฤศจิกายน 1966). "ระเบียบวินัยการครอบครองและการประยุกต์ใช้" . วารสารคณิตศาสตร์ประยุกต์ SIAM . 14 (6): 1266– 1274. doi : 10.1137/0114101 . ISSN 0036-1399 . 
  12. ^ Carter, J. Lawrence; Wegman, Mark N. (1979-04-01). "คลาสสากลของฟังก์ชันแฮช" . วารสารวิทยาการคอมพิวเตอร์และระบบ . 18 (2): 143– 154. doi : 10.1016/0022-0000(79)90044-8 . ISSN 0022-0000 . 
  13. ^ Bloom, Burton H. (กรกฎาคม 1970). "การแลกเปลี่ยนระหว่างพื้นที่/เวลาในการเข้ารหัสแฮชที่มีข้อผิดพลาดที่ยอมรับได้" . Communications of the ACM . 13 (7): 422– 426. doi : 10.1145/362686.362692 . ISSN 0001-0782 . S2CID 7931252 .  
  14. ^ Aragon, CR; Seidel, RG (ตุลาคม 1989). "ต้นไม้ค้นหาแบบสุ่ม". การประชุมวิชาการประจำปีครั้งที่ 30 ว่าด้วยพื้นฐานของวิทยาการคอมพิวเตอร์ . หน้า  540–545 . doi : 10.1109/SFCS.1989.63531 . ISBN 0-8186-1982-1.
  15. ^ Pugh, William (เมษายน 1989).การบำรุงรักษาแบบพร้อมกันของ Skip Lists (PS, PDF) (รายงานทางเทคนิค). ภาควิชาวิทยาการคอมพิวเตอร์ มหาวิทยาลัยแมริแลนด์. CS-TR-2222.
  16. ^ a b Alon, Noga ; Spencer, Joel H. (2016). วิธีการทางความน่าจะเป็น (ฉบับที่สี่). โฮโบเคน, นิวเจอร์ซีย์: ไวลีย์. ISBN 978-1-119-06195-3. OCLC  910535517 .
  17. ^ P. Erdős: ข้อสังเกตบางประการเกี่ยวกับทฤษฎีกราฟ, Bull. Amer. Math. Soc. 53 (1947), 292--294 MR 8,479d; Zentralblatt 32,192
  18. ^ Erdös, P. (1959). "ทฤษฎีกราฟและความน่าจะเป็น" . Canadian Journal of Mathematics . 11 : 34– 38. doi : 10.4153/CJM-1959-003-9 . ISSN 0008-414X . S2CID 122784453 .  
  19. ^ Seidel R.การวิเคราะห์ย้อนกลับของอัลกอริธึมทางเรขาคณิตแบบสุ่ม
  20. ^ Karger, David R. (1999). "การสุ่มตัวอย่างแบบสุ่มในปัญหาการตัด การไหล และการออกแบบเครือข่าย" คณิตศาสตร์ของการวิจัยการดำเนินงาน 24 ( 2): 383– 413. CiteSeerX 10.1.1.215.794 . doi : 10.1287/moor.24.2.383 . 
  21. ^ "6.046J บรรยายที่ 22: การลดความสุ่ม | การออกแบบและการวิเคราะห์อัลกอริทึม | วิศวกรรมไฟฟ้าและวิทยาการคอมพิวเตอร์" . MIT OpenCourseWare . สืบค้นเมื่อ2024-12-27 .
  22. ^ Luby, Michael; Wigderson, Avi (กรกฎาคม 1995). ความเป็นอิสระแบบคู่และการลดความสุ่ม (รายงาน). สหรัฐอเมริกา: มหาวิทยาลัยแคลิฟอร์เนียที่เบิร์กลีย์.
  23. ^ a b "บันทึกการบรรยาย บทที่ 3 เทคนิคการลดการสุ่มขั้นพื้นฐาน" . people.seas.harvard.edu . สืบค้นเมื่อ2024-12-27 .
  24. ^ Chazelle, B.; Friedman, J. (1990-09-01). "มุมมองเชิงกำหนดของการสุ่มตัวอย่างแบบสุ่มและการนำไปใช้ในเรขาคณิต" Combinatorica . 10 ( 3): 229– 249. doi : 10.1007/BF02122778 . ISSN 1439-6912 . 
  25. ^ Alippi, Cesare (2014), Intelligence for Embedded Systems , Springer, ISBN 978-3-319-05278-6.
  26. ^ Kushilevitz, Eyal; Nisan, Noam (2006), ความซับซ้อนของการสื่อสาร , สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์, ISBN 9780521029834สำหรับขอบเขตล่างแบบกำหนดค่าได้ โปรดดูหน้า 11; สำหรับขอบเขตบนแบบสุ่มเชิงลอการิทึม โปรดดูหน้า 31–32
  27. ^ Dyer, M.; Frieze, A.; Kannan, R. (1991), "อัลกอริทึมเวลาพหุนามแบบสุ่มสำหรับการประมาณปริมาตรของวัตถุนูน" (PDF) , Journal of the ACM , 38 (1): 1– 17, doi : 10.1145/102782.102783 , S2CID 13268711 
  28. ^ Füredi, Z. ; Bárány, I. (1986), "การคำนวณปริมาตรเป็นเรื่องยาก", Proc. 18th ACM Symposium on Theory of Computing (Berkeley, California, 28–30 พฤษภาคม 1986) (PDF) , New York, NY: ACM, หน้า  442–447 , CiteSeerX 10.1.1.726.9448 , doi : 10.1145/12130.12176 , ISBN  0-89791-193-8, S2CID  17867291
  29. ^ Shamir, A. (1992), "IP = PSPACE", Journal of the ACM , 39 (4): 869– 877, doi : 10.1145/146585.146609 , S2CID 315182 
  30. ^ Cook, Matthew ; Soloveichik, David; Winfree, Erik ; Bruck, Jehoshua (2009), "ความสามารถในการตั้งโปรแกรมของเครือข่ายปฏิกิริยาเคมี", ในCondon, Anne ; Harel, David ; Kok, Joost N.; Salomaa, Arto ; Winfree, Erik (บรรณาธิการ), กระบวนการทางชีวภาพเชิงอัลกอริทึม (PDF) , ชุดการคำนวณทางธรรมชาติ, Springer-Verlag, หน้า  543– 584, doi : 10.1007/978-3-540-88869-7_27 , ISBN 978-3-540-88868-0.
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Randomized_algorithm&oldid=1351521127#Derandomization "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อัลกอริทึมแบบสุ่ม

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

แรงจูงใจ

เพื่อเป็นตัวอย่างกระตุ้นความคิด ลองพิจารณาปัญหาการค้นหาค่า ' a ' ใน อาร์เรย์ ที่มีองค์ประกอบ n ตัว

ความซับซ้อนในการคำนวณ

ทฤษฎีความซับซ้อนของการคำนวณ จำลองอัลกอริทึมแบบสุ่มเป็น เครื่องจักรทัวริงเชิงความน่าจะ เป็น มีการพิจารณาทั้ง อัลกอริทึม ลาสเวกั ส และ มอนเตคาร์โล และมีการศึกษา คลาสความซับซ้อน หลายประเภท คลาส ความซับซ้อนแบบสุ่มพื้นฐานที่สุดคือ RP ซึ่งเป็นคลาสของ...

การเรียงลำดับ

อัลกอริทึม QuickSort ถูกค้นพบโดย Tony Hoare ในปี พ.ศ. 2492 และตีพิมพ์เผยแพร่ในเวลาต่อมาในปี พ.ศ. 2504 [ 4 ] ในปีเดียวกันนั้น Hoare ได้ตีพิมพ์ อัลกอริทึม QuickSelect [ 5 ] ซึ่ง ค้นหาองค์ประกอบค่ามัธยฐานของรายการในเวลาเชิงเส้นที่คาดหวัง จนถึงปี พ.ศ.