อัลกอริทึมที่มีประสิทธิภาพซับซ้อนเกินไปที่จะใช้


67

อัลกอริทึมของยูทิลิตี้ที่ถูกต้องตามกฎหมายมีอะไรบ้างที่ซับซ้อนเกินกว่าจะนำไปใช้ได้จริง?

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

การต้อนรับยังเป็นอัลกอริธึมที่ไม่สามารถนำไปใช้งานได้ซึ่งมี asymptotics ที่ดี แต่มีแนวโน้มว่าจะมีประสิทธิภาพที่แท้จริงต่ำ


1
สร้าง CW นี้เนื่องจากอาจเป็นรายการที่ยาว
Suresh Venkat

4
มีตัวชี้วัดสำหรับ 'ใกล้เป็นไปไม่ได้ที่จะใช้งานจริง' หรือไม่? มีทฤษฎีที่กำหนดหรือไม่
Ritwik Bose

@Mechko อาจเป็นขอบเขตล่างของขนาดของเครื่องจักรทัวริงที่เล็กที่สุดที่ส่งออกคำอธิบายของเครื่องทัวริงที่ใช้อัลกอริทึม :)
Radu GRIGore

@Radu GRIGore เป็นตัวชี้วัดที่ได้รับการยอมรับหรือเป็นสิ่งที่ควรพัฒนาหรือไม่ ฉันคิดว่า (ตอนนี้) มีเส้นที่เรียบง่ายและเคลื่อนที่ได้ที่กำหนด 'meh ไม่คุ้มค่า' ... : D
Ritwik Bose

4
ฉันสนใจคำแนะนำว่า Coppersmith-Winograd มีความสมเหตุสมผลในการดำเนินการ มีใครเคยเห็นการใช้งานที่เขียนลงแม้ในรหัสหลอกระดับสูงและมีใครเคยประเมินค่าคงที่หรือไม่?
Raphael

คำตอบ:


33

Chazelle ให้อัลกอริทึมเส้นเวลาสำหรับการวิเคราะห์รูปหลายเหลี่ยมที่เรียบง่าย Skiena เขียน (หน้า. 575, คู่มือการออกแบบอัลกอริทึม) ว่ามันเป็น "ความหวังที่เพียงพอที่จะทำให้มันมีคุณสมบัติเพียงพอที่จะพิสูจน์การมีอยู่"


3
อัลกอริทึมมีค่าคงที่ที่เหมาะสมหรือไม่
jbapple

นี่เป็นอัลกอริธึมเชิงเส้นเวลาเดียวที่รู้จักสำหรับปัญหาหรือไม่
โทมัส Ahle

2
@ThomasAhle ฉันเชื่อว่ามันเป็นอัลกอริทึมเชิงเส้นเวลาที่กำหนดเท่านั้นที่รู้จัก Amato, Goodrich และ Ramos มีการสุ่มแบบง่ายกว่า: cs.princeton.edu/courses/archive/fall05/cos528/handouts/ …
Sasho Nikolov

ความรู้ของฉันไม่ได้ถูกนำมาใช้และเป็นไปได้ยากที่เวลาเชิงเส้นตรงของอัลเชิงเส้นของ Chazelle ซึ่งเป็นไปได้ยากที่จะเป็นเพราะความซับซ้อนและเนื่องจากค่าคงที่อยู่ในระดับสูงดังนั้นจึงไม่สามารถแข่งขันกับทางเลือกอื่น ๆ ความสำเร็จทางทฤษฎีที่สำคัญแม้ว่า Ralph Boland
Ralph Boland

ฉันจะถามอีกครั้ง: อัลกอริทึมมีค่าคงที่ที่เหมาะสมหรือไม่
user1271772

29

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


3
วิกิพีเดียยังชี้ให้เห็นว่านี่ไม่ใช่อัลกอริธึม แต่เป็นอัลกอริธึมกึ่งเพราะมันต้องใช้ฮิวริสติกในการแก้ปัญหาคงที่
sclv

ฮิวริสติกคืออะไร คุณสามารถให้ลิงก์เพื่ออ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ไหม
zygimantus

22

อัลกอรึทึมใดก็ตามที่ใช้ผลลัพธ์ของ Robertson-Seymour เพื่อสรุปอัลกอริธึม "polytime" สำหรับสิ่งต่าง ๆ ที่เกี่ยวข้องกับกราฟที่ไม่รวมผู้เยาว์คงที่จะขอให้เกิดปัญหา ค่าคงที่ที่ซ่อนอยู่ในผลลัพธ์คือ "กาแลคซี"


3
นี่เป็นเรื่องยากที่จะติดตั้งหรือมีค่าคงที่มากเกินไปหรือไม่
Lev Reyzin

5
ใช่มันดูไม่เป็นตัวอย่างที่ดี หากฉันเข้าใจอย่างถูกต้องคำถามนั้นเกี่ยวกับอัลกอริธึมที่ใช้งานได้จริง (น่าจะเป็นค่าคงที่ 'เล็ก') แต่ซับซ้อนเกินไปที่จะนำไปใช้ แน่นอนคำถามทั้งหมดจะเปิดให้ตีความแตกต่างกัน :-)
Aryabhata

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

2
ตัวอย่างเช่นเราไม่รู้จักรายการผู้เยาว์ที่ไม่รวมสำหรับกราฟที่ฝังอยู่ในพรู
ปั้นจั่นขนาดใหญ่

17
ดูเหมือนว่าปัญหาที่ลึกกว่านี้: ไม่มีวิธีที่มีประสิทธิภาพที่รู้จักกันในการสร้างรายชื่อผู้เยาว์ดังนั้นสิ่งนี้จึงไม่ได้ให้อัลกอริทึมเลย คุณสมบัติที่ปิดเล็กน้อยส่วนใหญ่จะให้รายชื่อผู้เยาว์ที่ไม่ได้รับการยกเว้นหากแปลนิพจน์เชิงตรรกะโดยตรง ทฤษฎีบทของโรเบิร์ตสัน - ซีมัวร์ (การคาดคะเนของแว็กเนอร์) บอกเราว่ารายชื่อผู้เยาว์ที่ได้รับการยกเว้นนั้นแฝงตัวอยู่ในรายชื่อที่ไม่มีที่สิ้นสุด แต่ทฤษฎีบทไม่ได้ช่วยในการค้นหา ดังนั้นโรเบิร์ตสัน - ซีมัวร์จึงมักจะนำไปสู่การพิสูจน์การมีอยู่จริง
András Salamon

16

Dan Willard ของ"อัลกอริทึมการควบคุมความหนาแน่นสำหรับการแทรกและลบในไฟล์ที่เรียงลำดับตามลำดับในเวลาที่เลวร้ายที่สุด"อธิบายถึงอัลกอริทึมสำหรับการบำรุงรักษาชุดคำสั่งในอาร์เรย์ขนาดพร้อมการแทรกและการลบในเวลาตัวพิมพ์ใหญ่ที่สุดโดยที่คือขนาดหน้ากระดาษO ( บันทึก2 nO(n)BO(log2nB)B

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


12

ขั้นตอนวิธีการรวมรูปแบบการเรียงลำดับเชิงเส้นเวลาที่สูงขึ้นโดยเคียนไม่เคยถูกนำมาใช้เนื่องจากความซับซ้อนของ AFAIK


โชคดีที่มันยังมีอัลกอริธึมที่ใช้งานได้จริง คู่มือการใช้เหตุผลอัตโนมัติบอกว่ามันสามารถทำได้ในเวลา polytime (ข้างที่มันอ้างถึงอัลกอริทึมของเคียน) ดังนั้นมันจึงค่อนข้างดี
Jake

11

อัลกอริธึมเชิงเส้นเวลาเพื่อตรวจสอบว่าสามารถฝังกราฟในพื้นผิวที่ตายตัวได้หรือไม่

Ken-ichi Kawarabayashi, Bojan Mohar, Bruce A. Reed: อัลกอริธึมเวลาเชิงเส้นที่ง่ายขึ้นสำหรับการฝังกราฟลงในพื้นผิวโดยพลการและกราฟของกราฟของความกว้างของต้นไม้ที่ถูกล้อมรอบ FOCS 2008: 771-780

Bojan Mohar: อัลกอริธึมเชิงเส้นเวลาสำหรับการฝังกราฟในพื้นผิวโดยพลการ SIAM J. คณิตศาสตร์ไม่ต่อเนื่อง 12 (1): 6-26 (1999)


1
สิ่งนี้ไม่น่าจะมีคุณค่าในทางปฏิบัติแม้ว่าจะถูกนำไปใช้เนื่องจากมีการพึ่งพาอาศัยเอกซ์โพเนนเชียล (sic) มาก
Jeffε

8

ฉันไม่แน่ใจว่ามันมีประโยชน์อย่างไรในทางปฏิบัติ (แม้ว่าฉันกำลังคิดเกี่ยวกับการพับโปรตีนและการเปรียบเทียบรวมถึงการทำนายโครงสร้างรองของ RNA) แต่ Wolfgang Haken ได้ให้อัลกอริทึมพหุนามครั้งแรกสำหรับการตัดสินใจว่าปมเป็น simple loop ( Theorie der Normalflächen. Acta Math. 105, 1961, pp. 245--375) ดังที่ฉันจำได้มันยังคงซับซ้อนเกินกว่าจะนำไปใช้ในทศวรรษต่อ ๆ ไป

หากเชื่อว่ามีวิกิพีเดียจะมีการมอบอัลกอริธึมอื่น ๆ ในภายหลังและ "การทำความเข้าใจความซับซ้อนของอัลกอริทึมเหล่านี้คือการศึกษาเชิงรุก"


4
Haken ให้อัลกอริทึมแรก แต่มันไม่ทำงานในเวลาพหุนาม ในความเป็นจริงไม่รู้จักอัลกอริธึมแบบโพลี - ไทม์ (หรือผลลัพธ์ความกระด้าง NP) งานล่าสุดมีการลดปมเรื่องไม่สำคัญ (ผ่านการกำหนดพื้นผิวปกติของ Haken) เป็นการเขียนโปรแกรมจำนวนเต็มซึ่งมักจะแก้ปัญหาได้เร็วในทางปฏิบัติ
Jeff

3

ต้นไม้สลายตัวและบางทีฟีโบนักชีกองอยู่


14
ฟีโบนัชชีฮีปนั้นไม่ซับซ้อนเกินไป พวกเขาได้รับการดำเนินการและทดสอบ ปัญหาที่เกิดขึ้นกับพวกเขานั้นค่อนข้างที่ว่าการปฏิบัติจริงของพวกเขานั้นไม่ดีเท่ากับกองอื่น ๆ เนื่องจากปัจจัยคงที่ที่เพิ่มขึ้นในเวลาทำงาน
David Eppstein

1
ฉันเขียนแพคเกจเพื่อค้นหาการสลายตัวของต้นไม้และฉันไม่คิดว่ามันจะยากที่จะใช้yaroslavvb.blogspot.com/2011/01/building-junction-trees.html
Yaroslav Bulatov

2
รหัสของฉันเป็นเพียงแค่การแบ่งแยกต้นไม้แบบฮิวริสติกซึ่งไม่เหมาะกับวิธีการเขียนโปรแกรมแบบสาขาและแบบไดนามิก ... ฉันเดาว่าคุณหมายถึง "A Linear Time Algorithm ... " ของ Bodlaender ฉันไม่เห็นการใช้งานใด ๆ ของมัน
Yaroslav Bulatov

4
อัลกอริธึมเชิงเส้นเวลาของ Bodlaender ใช้อัลกอริธึมการเขียนโปรแกรมแบบไดนามิกจากเอกสารก่อนหน้านี้เป็นรูทีนย่อย: อัลกอริทึมนั้นคำนวณการจัดวางตำแหน่งที่เหมาะสมที่สุดในบางสิ่งเช่นเวลา ความกว้าง k เป็นอินพุต ฉันคิดว่าฉันจำได้ว่า Hans Bodlaender เคยบอกฉันว่าพวกเขาใช้อัลกอริทึมการเขียนโปรแกรมแบบไดนามิกที่ใช้เป็นรูทีนย่อย แต่มันช้าเกินไปสำหรับ k = 3 การเขียนโปรแกรมแบบไดนามิกเป็นส่วนหลักของอัลกอริทึมเชิงเส้นเวลาดังนั้นอัลกอริทึมของ Bodlaender จึงไม่ยากเกินกว่าที่จะนำมาใช้เพียงแค่ช้าเกินไป 2O(k3)O(n)
Bart Jansen

3
ฉันคิดว่านี่เป็นความพยายามในการนำไปใช้ที่ดีที่สุด: hein.roehrig.name/dipl
Diego de Estrada

1

โครงสร้างแฮชที่สมบูรณ์แบบ ( https://en.wikipedia.org/wiki/Perfect_hash_function#Construction ) จะใช้กับกรณีการใช้งานใด ๆ ที่มีคีย์แบบคงที่หรือไม่บ่อยนัก (เช่นชื่อโดเมนระดับบนสุดของเราเตอร์คำสำคัญในคอมไพเลอร์หรือชื่อฟังก์ชั่น ในไลบรารีมาตรฐาน) แต่ครั้งสุดท้ายที่ฉันดูฉันไม่พบการปรับใช้ใด ๆ

การค้นหาแบบพารามิเตอร์สามารถแก้ปัญหาการเพิ่มประสิทธิภาพที่ยากได้หลายอย่างรวมถึงบางอย่างที่อาจดูเหมือนว่า NP-hard ในเวลาพหุนาม กระดาษParametric ที่มีชื่อเรียกว่าการค้นหาที่ใช้งานจริงนั้นใช้ตัวแปรการค้นหาแบบ Parametric แต่ฉันก็ยังไม่คิดว่ามันถูกนำไปใช้ในซอฟต์แวร์เชิงปฏิบัติ

ขั้นตอนวิธีการที่เหมาะสมในการแยกส่วนของเส้นโดย Chazelle และ Edelsbrunnerพบทั้งหมดแยกกลุ่มสายในเวลา แต่มีความซับซ้อน CGAL เป็นห้องสมุดขั้นตอนวิธีเรขาคณิตที่มีความซับซ้อน แต่การดำเนินการขั้นตอนวิธีการที่เรียบง่ายที่เป็นlog)n O ( n บันทึกn + k ) O ( ( n + k ) บันทึกn )knO(nlogn+k)O((n+k)logn)


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