อัลกอริทึมการประมาณที่ใช้ในอัลกอริทึมที่แน่นอน


11

อัลกอริธึมการประมาณค่าอาจให้ผลลัพธ์ถึงปัจจัยคงที่ นี่คือความพึงพอใจน้อยกว่าอัลกอริทึมที่แน่นอน

อย่างไรก็ตามปัจจัยคงที่จะถูกละเว้นในความซับซ้อนของเวลา

ดังนั้นฉันสงสัยว่าเคล็ดลับต่อไปนี้เป็นไปได้หรือถูกใช้เพื่อแก้ไขปัญหา :BA

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

วิธีนี้การประมาณเป็น "subprocedure" ของอัลกอริทึมที่แน่นอนและปัจจัยคงที่ที่หายไปในขั้นตอนที่ 1 ถูกกลืนเข้าไปในขั้นตอนที่ 2


Crosspost จากmath SE
sdcvvc

คุณจะอธิบายสิ่งที่คุณหมายถึงโดยและน้ำหนักของS ? BAS
โยชิโอะโอกาโมโตะ

นี้เป็นทางการสำหรับรูปธรรม: , Bมีปัญหาด้านการสืบค้น , เป็นความคิดที่เป็นปัญหาการเพิ่มประสิทธิภาพ (เพื่อให้การแก้ปัญหามีน้ำหนักบางส่วน) และB เป็นองค์ประกอบของความสัมพันธ์ A,BABA
sdcvvc

คำตอบจะเป็นชุด ดังนั้นฉันคิดว่ามันเหมาะสมกว่าที่จะทำให้ชุมชนเป็นวิกิ
โยชิโอะโอกาโมโตะ

การเพิ่มแท็กรายการใหญ่ก็เพียงพอแล้วไม่จำเป็นต้องทำให้ชุมชนเป็น wiki IMHO
Gopi

คำตอบ:


12

ตัวอย่างจากความซับซ้อนของพารามิเตอร์คือการสร้างเคอร์เนลสำหรับปัญหาปกจุดสุดยอดโดยใช้ทฤษฎีบทของ Nemhauser และ Trotter

ในปัญหาปกจุดสุดยอดขั้นต่ำเราจะได้กราฟ G ที่ไม่ได้บอกทิศทางและเราจำเป็นต้องหาจุดสุดยอดของ G ที่มีขนาดต่ำสุด จุดสุดยอดของกราฟที่ไม่ได้บอกทิศทางคือเซตย่อยของจุดยอดที่สัมผัสกับขอบทั้งหมด

นี่คืออัลกอริทึมที่แน่นอนซึ่งใช้การประมาณในระยะแรก

ขั้นตอนที่ 1: การตั้งค่าจำนวนเต็มเชิงเส้นการเขียนโปรแกรมการกำหนดปัญหาปกขั้นต่ำจุดสุดยอด เป็นที่ทราบกันดีว่า (หรือง่ายต่อการแสดง) ว่าทางออกที่ดีที่สุดขั้นพื้นฐานของการเขียนโปรแกรมเชิงเส้นคือครึ่งหนึ่ง (เช่นทุกพิกัดคือ 0, 1 หรือ 1/2) วิธีแก้ปัญหาที่ดีที่สุดขั้นพื้นฐานสามารถพบได้โดยอัลกอริทึมพหุนามเวลาปกติสำหรับการเขียนโปรแกรมเชิงเส้น (หรือในกรณีพิเศษนี้เราสามารถกำหนดให้เป็นปัญหาการไหลของเครือข่ายดังนั้นเราจึงสามารถแก้ปัญหานี้ มีวิธีการแก้ปัญหาที่ดีที่สุดขั้นพื้นฐานเรารวมมันขึ้นเพื่อให้ได้ทางออกที่เป็นไปได้สำหรับปัญหาการโปรแกรมเชิงเส้นจำนวนเต็มดั้งเดิม ให้ S เป็นเซตย่อยที่สอดคล้องกัน มันเป็นการดีที่จะทราบว่า S เป็นการประมาณ 2 ของอินสแตนซ์ปกขั้นต่ำที่กำหนด

ขั้นตอนที่ 2: ค้นหาจุดสุดยอดขั้นต่ำในกราฟย่อยที่เกิดจาก S (ตัวอย่างเช่นโดยการค้นหาแบบละเอียด) ทฤษฎีบทโดย Nemhauser และ Trotter ระบุว่ากราฟย่อยนี้มีทางออกที่ดีที่สุดของกราฟอินพุตดั้งเดิม ดังนั้นความถูกต้องของวิธีนี้จึงเป็นไปตาม

คุณสามารถศึกษาหนังสือโดย Niedermeier เกี่ยวกับอัลกอริทึมแบบพารามิเตอร์คงที่สำหรับอัลกอริทึมนี้


11

ตัวอย่างหนึ่งเกี่ยวข้องกับการย่อยสลายต้นไม้และกราฟของ treewidth ขนาดเล็ก

B

BA

AAAAB


BA

BAAB


ในขณะที่ตัวอย่าง treewidth ทำงานในหลักการมันจะยากที่จะดำเนินการในทางปฏิบัติเพราะมันยากมากที่จะประมาณ treewidth ที่ดี (เนื่องจากคุณสามารถประมาณกลุ่ม)
Suresh Venkat

8

ตัวอย่างของอัลกอริธึมการประมาณที่รวมเข้ากับการแก้ปัญหาที่แน่นอนคืออัลกอริธึม Ellipsoid สำหรับการแก้ LPs - ถ้าสัมประสิทธิ์เป็น rationals จากนั้นเราสามารถคำนวณระยะห่างขั้นต่ำสุดระหว่างจุดยอดสองของ polytope ที่เป็นไปได้ ตอนนี้อัลกอลิธึมทรงรีได้คำนวณรูปวงรีขนาดเล็กลงและเล็กลงเรื่อย ๆ ซึ่งจะต้องมีคำตอบที่ดีที่สุด เมื่อรูปวงรีมีขนาดเล็กพอที่จะบรรจุเพียงจุดสุดยอดเดียวคุณจะพบจุดสุดยอดที่เหมาะสม นี่คือสาเหตุที่ LP มีพหุนามอ่อนมาก

k

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


4

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

ปัญหา คุณจะได้รับอาร์เรย์ A [1 .. n ] ซึ่งแต่ละองค์ประกอบอยู่ในตำแหน่งk มากที่สุดจากตำแหน่งที่จะอยู่ในถ้าเรียงลำดับแล้ว

ตัวอย่างเช่น [1..7] ที่แสดงด้านล่างอาจเป็นอาร์เรย์อินพุตสำหรับk = 2

ออกแบบอัลกอริทึมเพื่อเรียงลำดับอาร์เรย์ในเวลา O ( n log k ) โดยไม่ทราบว่าเป็นk

แหล่งที่มาของปัญหา: Algo Muse Archive

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