วิธีการวัดความซับซ้อนของปัญหาลอการิทึมไม่ต่อเนื่อง?


9

คำตอบสำหรับคำถามนี้ใน Crypto Stack Exchangeนั้นโดยทั่วไปบอกว่าในการวัดความซับซ้อนของปัญหาลอการิทึมเราจะต้องใช้ความยาวของตัวเลขที่แสดงขนาดของกลุ่มเข้าบัญชี ดูเหมือนว่าไม่มีเหตุผลทำไมเราไม่เลือกขนาดของกลุ่มเป็นข้อโต้แย้ง? มีเกณฑ์ที่จะรู้ว่าต้องเลือกอาร์กิวเมนต์อะไร? ในความเป็นจริงฉันรู้ว่าฉันมองข้ามบางสิ่งบางอย่างที่สำคัญเนื่องจากความซับซ้อนเปลี่ยนไปอย่างมากถ้าเราทำตามขนาดของกลุ่ม


2
คำถามที่น่าสนใจ! ฉันแก้ไขให้พูดว่า "วัดความซับซ้อน" แทนที่จะ "คำนวณ" เนื่องจากคำตอบของวิธีที่เราคำนวณคือ¯ \ _ (ツ) _ / ¯ :-)
David Richerby

ฉันคิดว่ามันเป็นวิธีที่ดีกว่า :)
Nassim HADDAM

คำตอบ:


5

ไม่สำคัญว่าคุณจะเลือกขนาดของกลุ่มหรือไม่ |G| หรือขนาดของจำนวนเต็มแทน n เป็นพารามิเตอร์ตั้งแต่ nlog|G|. มีสองเหตุผลที่มักจะอธิบายความซับซ้อนในแง่ของn ค่อนข้างมากกว่า |G|:

  1. nคือความยาวของอินพุต (แม่นยำยิ่งขึ้นอินพุตมีความยาว ) และเรามักจะวัดความซับซ้อนของอัลกอริทึมเป็นฟังก์ชันของความยาวอินพุตΘ(n)

  2. มักจะnเป็นจำนวนน้อยเช่น1024ในขณะที่ |G| เป็นจำนวนมากเช่น (ประมาณ) 21024.


ฉันเห็นประเด็นของคุณ แต่มันไม่ได้ทำให้เป็นปัญหาใน P หากเราเลือกขนาดของกลุ่มเป็นพารามิเตอร์หรือไม่
Nassim HADDAM

1
คุณไม่สามารถเลือกพารามิเตอร์ในกรณีนั้น - พารามิเตอร์นั้นเป็นความยาวอินพุตเสมอ
Yuval Filmus

ขอบคุณสำหรับคำตอบ ฉันมีปัญหากับสิ่งที่อาจเกิดขึ้นหากเราพิจารณากรณีอื่น ๆ (ปัญหาใน P กลายเป็น NP และวิธีอื่น ๆ ) ฉันเห็นได้ชัดเจนแล้วตอนนี้ :)
Nassim HADDAM

1
เราไม่ทำการคำนวณเป็นเอกเทศเนื่องจากเป้าหมายของเราคือการคำนึงถึงจำนวนหรือเพื่อคำนวณลอการิทึมแบบแยกส่วนและเราไม่สนใจว่าจะมีการแสดงตัวเลขอย่างไร การให้เป็นอินพุตในไบนารี่หรือยูนารีไม่ส่งผลต่อ "เวลาของกำแพง" ที่จำเป็นสำหรับการแก้ปัญหาเฉพาะความซับซ้อนในแง่ของขนาดอินพุต (เนื่องจากเรากำลังเปลี่ยนขนาดอินพุต!)
Yuval Filmus

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