คำจำกัดความของอัลกอริทึมที่ทำงานในเวลาพหุนามและในเวลาพหุนามอย่างยิ่ง


18

Wikipediaกำหนดให้เป็น

อัลกอริธึมบอกว่าเป็นเวลาพหุนามหากเวลาวิ่งของมันถูก จำกัด ด้วยพหุนามนิพจน์ในขนาดของอินพุตสำหรับอัลกอริทึมคือสำหรับค่าคงที่ kT(n)=O(nk)

อัลกอริทึมทำงานในเวลาพหุนามอย่างยิ่งถ้า [8]

  • จำนวนของการดำเนินการในรูปแบบการคำนวณทางคณิตศาสตร์ถูก จำกัด ขอบเขตโดยพหุนามในจำนวนของจำนวนเต็มในอินสแตนซ์อินพุต และ

  • พื้นที่ที่ใช้โดยอัลกอริทึมนั้นถูก จำกัด โดยพหุนามในขนาดของอินพุต

ในBernhard Korte, Jens Vygen, การเพิ่มประสิทธิภาพ Combinatorial :

นิยาม 1.4

อัลกอริธึมที่มีเหตุผลเข้าว่ากันว่าในเวลาพหุนามถ้า

  • มีจำนวนเต็ม k ซึ่งมันทำงานในเวลาโดยที่ n คือขนาดอินพุตและO(nk)
  • ตัวเลขทั้งหมดในการคำนวณระดับกลางสามารถเก็บไว้ได้ด้วยบิตO(nk)

อัลกอริทึมที่มีการป้อนข้อมูลโดยพลการบอกว่าจะทำงานในเวลาพหุนามอย่างยิ่งถ้า

  • มีจำนวนเต็ม k ซึ่งมันทำงานในเวลาสำหรับอินพุตใด ๆ ที่ประกอบด้วยตัวเลข n และO(nk)
  • มันทำงานในเวลาพหุนามสำหรับการเข้าเหตุผล

โปรดแก้ไขฉันหากฉันผิด ต่อไปนี้เป็นความแตกต่างที่แท้จริงที่ฉันสังเกตเห็น:

  • สำหรับอัลกอริธึมเวลาพหุนามนิยามของ Korte และ Vygen คือ "คำจำกัดความของวิกิพีเดีย + พื้นที่เก็บข้อมูลพหุนาม"

  • สำหรับอัลกอริธึมเวลาแบบพหุนามอย่างยิ่งคำจำกัดความของ Korte และ Vygen และคำจำกัดความของ Wikipedia ทั้งคู่ต้องใช้เวลาพหุนามในขนาดที่เก็บข้อมูล แต่ K และ V นั้นยังต้องการเวลาพหุนามในจำนวนตัวเลขในอินพุตใด ๆ ในขณะที่วิกิพีเดียนั้นต้องการพื้นที่เก็บข้อมูลพหุนามในขนาดอินพุตเพิ่มเติม

ดังนั้นคำจำกัดความของ K และ V และ Wikipedia สำหรับแนวคิดทั้งสองนี้เทียบเท่ากันตามลำดับหรือไม่ ความแตกต่างและความสัมพันธ์ระหว่างพวกเขาคืออะไร?

ขอบคุณและขอแสดงความนับถือ!


ส่วนวิกิพีเดียทันทีหลังจาก defn มีคำอธิบายที่ดีงามไม่ชัดเจนเพียงพอหรือไม่ มันเกี่ยวข้องกับจำนวนบิตที่เป็นตัวแทนของตัวเลขและตัวเลขที่มีขนาดใหญ่มากอาจส่งผลกระทบต่อการวัดความซับซ้อน "ขึ้น" คิดว่า defns กับ K&V นั้นน่าจะใกล้เคียงกัน สำหรับอินพุตที่มีเหตุผลเราจำเป็นต้องมีการพิสูจน์ว่าเลขคณิตของ rationals ไม่ได้เพิ่มขนาดให้ใหญ่ขึ้น คิดว่าสิ่งนี้สามารถแสดงผลได้โดยการค้นหา LCD ของอินพุตทั้งหมดและทำการคำนวณทางคณิตศาสตร์ทั้งหมดด้วยตัวเลขที่แสดงถึง LCD
vzn

@ vzn: คำอธิบายใน Wikipedia (1) นั้นเหมาะสมสำหรับเลขคณิตเทียบกับเครื่องทัวริง แต่ค่อนข้างตื้นเกี่ยวกับวัตถุประสงค์และคำจำกัดความของโพลีที่แข็งแกร่งและ (2) ผิดกับสิ่งที่ GCD เป็นตัวอย่าง
alexei

คำตอบ:


5

ก่อนคำจำกัดความที่เป็นทางการให้พิจารณาว่าการจำแนกประเภท "มั่น / อ่อนแอ" มีจุดประสงค์เพื่อแยกแยะอย่างไร

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

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

ชุดของอัลกอริทึมที่ทำงานในจำนวนของการดำเนินการทางคณิตศาสตร์พหุนามในจำนวนของตัวเลขเข้าเป็นที่ดีที่กำหนด แต่คาบเกี่ยวกับชั้นเรียนของอัลกอริทึมที่ใช้จำนวน TM ขั้นตอนที่ชี้แจงในระยะเวลาของการป้อนข้อมูลไบนารีเข้ารหัส (ดูตัวอย่าง ) ดังนั้นสำหรับชุดนี้คุณสมบัติในวรรคสองจะไม่ถือ หากต้องการยกเว้นจุดตัดที่ไม่ต้องการเราได้เพิ่มเงื่อนไขสำหรับพหุนาม TM TM [*]

ใน [1] นี้ระบุไว้ในสองวิธี:

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

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

[*] เงื่อนไขที่สองระบุไว้ทุกที่ในฐานะพื้นที่พหุนามขณะที่ต้องใช้เวลาพหุนามทำให้ฉันมีเหตุผล อดีตนั้นรวมแล้วมากกว่า แต่ก็แปลก มีขั้นตอนวิธีพหุนามอย่างยิ่งที่ใช้เวลามากกว่าพหุนามหรือไม่? โปรดทราบว่าตัวอย่างการยกกำลังสองซ้ำนั้นไม่ใช้เวลาพหุนามและพื้นที่พหุนาม

[1] Grötschel, Martin; LászlóLovász, Alexander Schrijver (1988) "ความซับซ้อน Oracles และการคำนวณเชิงตัวเลข" อัลกอริทึมทางเรขาคณิตและการเพิ่มประสิทธิภาพ Combinatorial สปริงเกอร์ ไอ 0-387-13624-X

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