มีปัญหาอะไรบ้างที่เรารู้ว่าเรามีอัลกอริธึมที่เหมาะสมที่สุด?


15

อะไรคือปัญหาที่ไม่สำคัญที่เรารู้ว่าอัลกอริธึมปัจจุบันที่เรามีคือปัญหาที่เหมาะสมที่สุด (สำหรับเครื่องทัวริง)

และนี่พิสูจน์ได้อย่างไร


11
เครื่องจักรทัวริงเป็นแบบจำลองที่ยุ่งยากสำหรับขอบเขตที่ต่ำกว่า การเปลี่ยน defn สามารถเปลี่ยนพหุนามในเวลาทำงานดังนั้นคุณจะต้องเจาะจงมากขึ้น
Suresh Venkat

คุณจะกำหนดที่ไม่สำคัญได้อย่างไร
funkstar

1
ตามที่สุเรชกล่าวไว้ TM ประเภทที่คุณใช้มีอิทธิพล ฉันเดาว่าสำหรับภาษาของ palindromes (คำที่คุณอ่านย้อนหลัง) เรามี 1-tape TM ที่ดีที่สุดซึ่งใช้ขั้นตอนในการตัดสินใจภาษา และสำหรับ 2-tape TMs มันสามารถตัดสินใจได้ในเวลาเชิงเส้น O(n2)
Bruno

คำตอบ:


18

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


10
ในทำนองเดียวกันอัลกอริทึมใด ๆ ที่มีรันไทม์อยู่ในลำดับเดียวกันกับขนาดเอาต์พุตที่ดีที่สุด
Raphael

9
ฉันเชื่อว่าคำตอบนี้และความคิดเห็นที่ตามมาคือสถานะที่สมบูรณ์ของศิลปะ
Jeffε

9
นี่เป็นสิ่งที่ทำให้ผิดหวัง
sture

1
สำหรับบันทึกความคิดเห็นของJɛ ff E ดูเหมือนจะอ้างถึงคำตอบของ Shir ด้านล่าง
András Salamon

1
ฉันหมายถึงคำตอบของ Max ไม่ใช่ของ Shir และความคิดเห็นของ Raphael ต่อคำตอบของ Max
Jeffε

8

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

อย่างไรก็ตามข้อเสียคือการวัดความซับซ้อนนี้ใช้ในการประมวลผลข้อมูลควอนตัมเป็นอย่างมากเพราะมันเป็นวิธีที่ง่ายในการพิสูจน์ช่องว่างระหว่างควอนตัมและพลังการคำนวณแบบดั้งเดิม อัลกอริทึมควอนตัมที่ฉาวโฉ่ที่สุดในกรอบนี้เป็นอัลกอริทึมของโกรเวอร์ รับสตริงไบนารีที่มีอยู่คนเดียวที่ฉันเช่นว่า x ฉัน = nคุณจะต้องไปหาฉัน คลาสสิก (โดยไม่ต้องใช้คอมพิวเตอร์ควอนตัม) อัลกอริธึมเล็กน้อยที่สุดเหมาะสมที่สุด: คุณจำเป็นต้องค้นหาสตริงนี้โดยเฉลี่ย n / 2ครั้งโดยเฉลี่ยเพื่อค้นหาx1,,xnixi=nin/2ผม Grover จัดทำอัลกอริทึมควอนตัมที่ทำเช่นนั้นใน O ( iเคียวรีกับสตริง สิ่งนี้ได้รับการพิสูจน์แล้วว่าเหมาะสมที่สุดO(n)


2
แท้จริงแล้วความซับซ้อนของการค้นหาเป็นพื้นฐานสำคัญสำหรับคำตอบของ Max สำหรับปัญหาส่วนใหญ่อัลกอริทึมใด ๆ ที่พิสูจน์ได้ว่า "ต้องอ่านอินพุตทั้งหมด" หรืออย่างน้อยเศษส่วนคงที่ของอินพุต
Jeffε

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

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

ทำให้รู้สึกขอบคุณสำหรับการชี้แจง!
Abel Molina

3
  1. การเรียงลำดับการเปรียบเทียบโดยใช้ (การเรียงลำดับผสานกับชื่อหนึ่ง) นั้นเหมาะสมที่สุดการพิสูจน์เกี่ยวข้องกับการคำนวณความสูงของต้นไม้ที่มี n ! ใบไม้.O(nlogn)n!

  2. สมมติว่าเกมที่ไม่เหมือนใคร Conjecture, Khot, Kindler, Mossel และ O'donnell แสดงให้เห็นว่ามันเป็น NP-complete สำหรับ Max-Cut โดยประมาณที่ดีกว่าอัลกอริทึมของ Goemans และ Williamson ดังนั้นในแง่ที่ว่า G&W เหมาะสมที่สุด (สมมติว่า )PNP

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


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

@Tsuyoshi ฉันก็เลยเดาได้ยากว่าผู้ถามหมายถึงอะไรซึ่งทำให้ฉันลองคำตอบในหลาย ๆ ทางโดยหวังว่าจะมีบางอย่างที่มีประโยชน์สำหรับเขา / เธอ อะไรทำให้คุณพูดว่า (1) ไม่ใช่คำตอบที่ถูกต้อง
Shir

2
ผู้ถามถามอัลกอริทึมที่เหมาะสมที่สุดสำหรับทัวริงเครื่องโดยเฉพาะ
Tsuyoshi Ito

6
"การเรียงลำดับการเปรียบเทียบ" จริงๆแล้วเป็น "ปัญหา" หรือไม่ หรือว่าเป็นปัญหาและข้อ จำกัด ในรูปแบบการคำนวณ?
Jeffε

3

สมมติว่าคุณจะได้รับการป้อนข้อมูลและจะขอให้ตัดสินใจว่าเครื่อง RAM Mยุติการป้อนข้อมูลxหลังจากทีขั้นตอน ตามทฤษฎีลำดับชั้นของเวลาอัลกอริธึมที่เหมาะสมที่สุดในการตัดสินใจว่านี่คือการจำลองการประมวลผลของM ( x )สำหรับขั้นตอนtซึ่งสามารถทำได้ในเวลาO (w=M,x,tMxtM(x)t )O(t)

(หมายเหตุ: สำหรับเครื่องจักรทัวริงการจำลองการประมวลผลใช้ขั้นตอนO ( t log t )เรารู้เพียงขอบเขตล่างของΩ ( t )ดังนั้นนี่จึงไม่ค่อยเหมาะสำหรับเครื่องทัวริงโดยเฉพาะ)MO(tlogt)Ω(t)

มีปัญหาอื่น ๆ ซึ่งประกอบด้วยรุ่นของปัญหาการหยุดพักเป็นกรณีย่อย ยกตัวอย่างเช่นการตัดสินใจว่าประโยคเป็นผลมาจากการ WS1S ต้องใช้เวลา2 O ( | θ | )และนี่คือที่ดีที่สุดθ2↑↑O(|θ|)


3

ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "ไม่สำคัญ" แต่เกี่ยวกับเรื่องนี้ } ภาษานี้ไม่ปกติจึง TM ใด ๆ การตัดสินใจจะต้องทำงานในΩ ( n log n ) อัลกอริธึมที่ง่าย (ข้าม 0 ทุก ๆ ค่า) นั้นเหมาะสมL={02k|k0}Ω(nlogn)


3

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

ตัวอย่างหนึ่งคือการรักษาจำนวนเงินนำหน้าภายใต้การปรับปรุงแบบไดนามิก เราเริ่มต้นด้วยอาร์เรย์ของตัวเลขและเป้าหมายคือการรักษาโครงสร้างข้อมูลที่ช่วยให้การดำเนินการดังต่อไปนี้:A[1],,A[n]

  • เพิ่มไปยังA [ i ] , กำหนดiและΔΔA[i]iΔ
  • คำนวณผลรวมนำหน้า , รับij=1iA[i]i

คุณสามารถสนับสนุนการดำเนินงานทั้งในเวลาที่มีโครงสร้างข้อมูลที่อยู่บนพื้นฐานของต้นไม้ไบนารีผลดีกับ[ ผม]ที่ใบ Patrascu และ Demaineแสดงให้เห็นว่านี้เป็นที่เหมาะสมสำหรับโครงสร้างข้อมูลใด ๆ ที่มีลำดับของnเพิ่มเติมและแบบสอบถามคำนำหน้าจำนวนเงินนั้นจะต้องใช้เวลาΩ ( n log n )เวลารวมO(logn)A[i]nΩ(nlogn)

อีกตัวอย่างหนึ่งคือUnion find : เริ่มจากพาร์ติชั่นเป็น singletons และเก็บโครงสร้างข้อมูลที่อนุญาตการดำเนินการสองอย่าง:{1,n}

  • ยูเนี่ยน: ให้และj , แทนที่ส่วนที่มีiและส่วนที่มีjด้วยยูเนี่ยนijij
  • ค้นหา: รับ , ส่งออกองค์ประกอบที่เป็นที่ยอมรับจากส่วนที่มีฉันii

Tarjanแสดงให้เห็นว่าคลาสสิก disjoint ตั้งโครงสร้างข้อมูลป่ากับสหภาพโดยการจัดอันดับและ heuristic การบีบอัดเส้นทางใช้เวลาต่อการดำเนินการโดยที่αเป็นฟังก์ชัน Ackermann ผกผัน Fredman และ Saksแสดงให้เห็นว่าสิ่งนี้ดีที่สุด: สำหรับโครงสร้างข้อมูลใด ๆ มีลำดับของn union และค้นหาการดำเนินการที่ต้องใช้Ω ( n α ( n ) )O(α(n))αnΩ(nα(n))เวลา



0

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

ฉันกำลังอ้างถึงวิกิพีเดียด้านบน แต่มันก็ไม่มีหลักฐานพิสูจน์ว่าเป็นสิ่งที่ดีที่สุดบางทีอาจมีบางแหล่งอ้างอิงอื่น ๆ ที่พิสูจน์ว่าผู้คนสามารถมองโลกในแง่ดีได้


-1

อัลกอริทึมเวลาเชิงเส้นย่อยจำนวนมากมีขอบเขตบนที่ตรงกับขอบเขตที่ต่ำกว่าของพวกเขา


3
ทำเครื่องหมายว่าซ้ำซ้อน
Jeffε

อัลกอริธึมเวลาซับลิเนียร์และอัลกอริทึมการสตรีมเป็นพื้นที่ต่าง ๆ
Bin Fu

1
เป็นเรื่องจริง แต่คุณควรรวมคำตอบไว้ด้วยกัน
Suresh Venkat

ตัวอย่างของอัลกอริธึมเวลาซับลิเนียร์ที่เหมาะสมสามารถเป็นได้
Bin Fu

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