ผมเพิ่งอ่านเกี่ยวกับขั้นตอนวิธีการในการตรวจสอบและอ่าน bisimilarity ว่าปัญหาคือP-สมบูรณ์ นอกจากนี้ผลที่ตามมาก็คือปัญหานี้หรือปัญหา P-Complete ใด ๆ ไม่น่าจะมีอัลกอริทึมแบบขนานที่มีประสิทธิภาพ
สัญชาตญาณที่อยู่เบื้องหลังคำพูดสุดท้ายนี้คืออะไร?
ผมเพิ่งอ่านเกี่ยวกับขั้นตอนวิธีการในการตรวจสอบและอ่าน bisimilarity ว่าปัญหาคือP-สมบูรณ์ นอกจากนี้ผลที่ตามมาก็คือปัญหานี้หรือปัญหา P-Complete ใด ๆ ไม่น่าจะมีอัลกอริทึมแบบขนานที่มีประสิทธิภาพ
สัญชาตญาณที่อยู่เบื้องหลังคำพูดสุดท้ายนี้คืออะไร?
คำตอบ:
ใด ๆปัญหาที่สมบูรณ์ไม่น่าจะมีขั้นตอนวิธีการแบบคู่ขนานที่มีประสิทธิภาพ ทำไม
การมีอยู่ของปัญหาที่สมบูรณ์แบบเป็นเงื่อนงำที่สำคัญที่สุด. คำถามคือทำไมการคาดเดานี้เกี่ยวข้องกับการคำนวณแบบขนาน? เริ่มจากทรัพยากรที่ใช้ในการคำนวณกันก่อน สำหรับการคำนวณตามลำดับ: เวลาและพื้นที่ สำหรับการคำนวณแบบขนาน: เวลาและฮาร์ดแวร์ (จำนวนโปรเซสเซอร์) มีความสัมพันธ์หรือไม่? ใช่ พื้นที่ต่อเนื่อง time เวลาขนาน ลำดับเวลา↔ฮาร์ดแวร์แบบขนาน การติดต่อระหว่างพื้นที่ตามลำดับและเวลาขนานดูเหมือนว่าจะเป็นอิสระจากรูปแบบการคำนวณแบบขนานที่นำมาใช้; สิ่งนี้นำไปสู่สิ่งต่อไปนี้ที่เรียกว่าวิทยานิพนธ์การคำนวณแบบขนานซึ่งไม่ได้รับการพิสูจน์
(Chandra และ Stockmeyer) การคำนวณ TM ทุกอันมีความซับซ้อนของพื้นที่ สามารถจำลองในแบบจำลองการคำนวณแบบขนานในเวลา T ( n ) = O ( S ( n ) O ( 1 ) )และการคำนวณแบบขนานทั้งหมด แบบจำลองที่มีความซับซ้อนของเวลา T ′ ( n )สามารถจำลองโดย TM ที่มีความซับซ้อนของพื้นที่ S ′ ( n ) = O ( T ′ ( n ) O )
ชั้นของการแก้ไขปัญหาที่เกิดขึ้นตามลำดับในพื้นที่พหุนามคือและชุดของปัญหาแก้ไขได้ในเวลาพหุนามคือPตั้งแต่ปีP S P C Eคิดว่าจะเป็นชั้นขนาดใหญ่กว่าของปัญหากว่าPวิทยานิพนธ์ ปริมาณการปรับปรุงที่มีประสิทธิภาพทำไปได้โดยการขนาน ผลของวิทยานิพนธ์นี้คือพรีมสามารถแก้ปัญหาที่ไม่สมบูรณ์ของพีเอ็นในเวลาพหุนาม ... แต่น่าเสียดายที่ไม่มี! วิทยานิพนธ์การคำนวณแบบขนานหมายความว่าเราสามารถจัดการกับปัญหาที่เป็นของP S P A C E ได้จริง… แต่สิ่งนี้ต้องการตัวประมวลผลจำนวนมาก! การแลกเปลี่ยนพื้นที่เวลากำลังทำงาน: เวลาเอ็กซ์โพเนนเชียลของโมเดลการคำนวณแบบลำดับจะถูกเปลี่ยนเป็นจำนวนเอ็กซ์โพเนนเชียลของตัวประมวลผลในแบบจำลองการคำนวณแบบขนานในขณะที่พื้นที่พหุนามบนแบบจำลองการคำนวณแบบอนุกรมจะเปลี่ยนเป็นเวลา รูปแบบการคำนวณ
การปิดนี้เป็นเรื่องง่ายที่จะเข้าใจถ้าเราพยายามที่จะ จำกัด ทั้งเวลาคู่ขนานและฮาร์ดแวร์ขนาน: ถ้าขนานแบบจำลองคอมพิวเตอร์มีจำนวนพหุนามของตัวประมวลผลแล้วระดับของปัญหาที่แก้ไขได้ในเวลาพหุนามขนานPถ้าเรา จำกัด จำนวนตัวประมวลผลให้กับพหุนามเราสามารถปรับปรุงประสิทธิภาพของเครื่องตามลำดับ แต่ไม่เกินตัวประกอบพหุนาม ดังนั้นเราสามารถลดระดับของพหุนามแสดงถึงความซับซ้อนของเวลา แต่เราไม่สามารถใช้การขนานเพื่อลดต้นทุนเอ็กซ์โพเนนเชียลเป็นต้นทุนพหุนาม
ปัญหาที่แก้ไขได้ในแบบคู่ขนานกับความซับซ้อนเวลาพหุนามที่มีปัญหาเหล่านั้นที่อยู่ในPข้อ จำกัด พหุนามในจำนวนโปรเซสเซอร์นำไปสู่รูปแบบการคำนวณแบบขนานเทียบเท่ากับ TM มีข้อควรพิจารณาในทางปฏิบัติที่สำคัญสองประการ: ตัวประมวลผลพหุนามจำนวนใดที่สามารถยอมรับได้ / ราคาไม่แพง? ในทางปฏิบัติจำนวนโพลิโนเมียลของโปรเซสเซอร์มีความหมายเป็นเชิงเส้นหรือใกล้ ช่วงเวลาของพหุนามแบบใดที่ทำได้ มันกลับกลายเป็นว่าปัญหาที่เป็นไปได้ที่ขนานกันอย่างมากเกือบทั้งหมดสามารถบรรลุเวลาขนานของโพลี ในแบบคู่ขนานความซับซ้อนของเวลาซึ่งเป็นลอการิทึมในความยาวอินพุตแสดงถึงการคำนวณแบบขนานที่มีประสิทธิภาพ อัลกอริธึมแบบขนานถือว่ามีประสิทธิภาพหากกำหนดจำนวนโพลิโนเมียลของตัวประมวลผลความซับซ้อนของเวลาคือโพลี
ได้รับปัญหาที่ kและเอชจะคงที่วิทยานิพนธ์การคำนวณแบบขนานหมายถึงการดำรงอยู่ของอัลกอริทึมแบบขนานสำหรับ Rกับ ความซับซ้อนของเวลา O ( ( l o g n ) k ′ )โดยที่ k ′เป็นค่าคงที่ การเปรียบเทียบระหว่างเวลาตามลำดับและเวลาแบบขนานช่วยให้การจำแนกเป็นปัญหาแบบขนานได้สูง (จากมุมมองเวลา)
จากวิทยานิพนธ์การคำนวณแบบขนานมันเป็นไปตามที่เป็นปัญหาที่เกิดขึ้นแบบขนานกันมาก P O L Y L O G S P A C Eไม่มีปัญหาที่สมบูรณ์เกี่ยวกับการลดพื้นที่การบันทึก นี้หมายถึง P O L Y L O G S P C E ≠ P ดูเหมือนว่า
มีปัญหาที่สามารถแก้ไขได้ในเวลาพหุนามโดยใช้พื้นที่โพลี Pปัญหาที่สมบูรณ์อาจจะเป็น P - ( P ∩ P O L Y L O G S P C E )
(คลาสของ Nick - เรียกว่าเพื่อเป็นเกียรติแก่ Nicholas Pippenger คนแรกที่ระบุและอธิบายลักษณะในปี 1979) เป็นชั้นของปัญหาที่สามารถแก้ไขได้ในเวลา polylogarithmic (กล่าวคือมีความซับซ้อนของเวลาด้วยจำนวนโพลิโนเมียลของตัวประมวลผล (เช่นล้อมรอบด้วย O ( f ( n ) )สำหรับฟังก์ชันพหุนาม fโดยที่ nคือขนาดของปัญหา) การคำนวณแบบขนานหมายถึง N C ⊂ ( P ∩ P O )
อย่างไรก็ตามโชคไม่ดีที่นิยามยังรวมถึงปัญหามากมายที่ไม่สามารถปรับเทียบได้อย่างมีประสิทธิภาพ ตัวอย่างที่น่าอับอายที่สุดคือการค้นหาแบบไบนารีขนาน ปัญหาคือปัญหานี้มีความซับซ้อนของเวลาแบบ polylogarithmic แม้จะเป็นp = 1 ก็ตามอัลกอริธึมลำดับที่ต้องการเวลาลอการิทึมส่วนใหญ่ในกรณีที่แย่ที่สุดคือในN Cโดยไม่คำนึงถึงความเป็นไปได้แบบขนาน!
ทีนี้เราก็สามารถอธิบายได้ว่าทำไมปัญหาที่สมบูรณ์แบบคือปัญหาขนานที่ยากที่สุด รับปัญหาP-สมบูรณ์Q - ปัญหาที่สมบูรณ์ในทางกลับกันนี้จะหมายความว่าทุกปัญหาในPสามารถแก้ไขได้ในพื้นที่บันทึกโพลี: ( P ∩ P O L Yมันไม่น่าเป็นไปได้มากที่การมีอัลกอริธึมแบบขนานที่มีประสิทธิภาพ: ถ้าอัลกอริธึมแบบขนานจะมีอยู่กับความซับซ้อนของเวลาจากนั้นการคำนวณแบบขนาน ของอัลกอริทึมตามลำดับที่มีความซับซ้อนของพื้นที่O ( ( l o g n ) k ′ )สำหรับปัญหาเดียวกัน ตั้งแต่QคือP P ดังที่คุณทราบแล้วเราเชื่อว่า ( P ∩ P O L Y L O G S P A C E ) instead Pแม้ว่าเราจะยังไม่สามารถพิสูจน์ได้
หนึ่งการสังเกตการณ์ขั้นสุดท้ายเกี่ยวกับข้อกำหนดของตัวประมวลผลพหุนาม นั่นคือคำสั่งทางทฤษฎี ในทางปฏิบัติ: ข้อกำหนดของตัวประมวลผลที่เติบโตเร็วกว่าขนาดของปัญหาอาจไม่มีประโยชน์จริง ๆ
เพราะ "คู่ขนานที่มีประสิทธิภาพ" ตกอยู่ภายใน (“นิค Class” ปัญหา decidable ในเวลา polylogarithmic มีจำนวนพหุนามของโปรเซสเซอร์) และมันก็เป็นกันอย่างแพร่หลายเชื่อว่าP ดังนั้นใด ๆมีปัญหาไม่เชื่อว่าจะมีขั้นตอนวิธีการแบบคู่ขนานที่มีประสิทธิภาพ (ตั้งแต่ที่จะบ่งบอกว่า P = N C )
แน่นอนทั้งหมดนี้ขึ้นอยู่กับการคาดเดาว่าที่คุณรู้ว่ามันเป็นปัญหาที่เปิดที่ Pไม่ได้อยู่ในระดับแรกของ N Cคือเราไม่ได้รู้ว่าถ้าไม่มีC 1 ≠ P
ยิ่งกว่านั้นเราไม่รู้ด้วยซ้ำว่าคุณไม่สามารถแก้ปัญหาในในA C 0 [ 6 ] , นั่นคือความลึกคงที่ (= เวลาคงที่ขนาน) วงจรบูลีนที่มีประตู
สำหรับข้อมูลเพิ่มเติมดูที่หนังสือต่อไปนี้:
Raymond Greenlaw, H. James Hoover, Walter L. Ruzzo, " ข้อ จำกัด ในการคำนวณแบบขนาน: ทฤษฎีความสมบูรณ์แบบ P ", 1995
คำตอบของ Kaveh ครอบคลุมคำจำกัดความปกติของ "parallelism" ซึ่งก็คือ NC คำถามที่ว่า P NC เป็นหนึ่งในคำถามที่ยากขึ้นในทฤษฎีความซับซ้อน (และในบางวิธีที่เกี่ยวข้องกับคำถามP < NP) หรือไม่
สัญชาตญาณที่อยู่เบื้องหลังก็คือปัญหาบางอย่างใน P เช่นการเขียนโปรแกรมเชิงเส้นหรือคำสั่ง DFS รู้สึกเหมือนพวกเขามีการอ้างอิงจำนวนมากที่บังคับให้ "เส้นทางวิกฤติ" ที่ยาวที่ไม่สามารถขนานกันได้ นี่ไม่ใช่ข้อพิสูจน์ใด ๆ เกินกว่าระดับที่ดูเหมือนจะมีพลังอำนาจมาก แต่นี่เป็นแนวคิดพื้นฐาน
แก้ไข:เพื่อให้ชัดเจนสำหรับความคิดเห็นประเด็นของคำตอบนี้คือการพูดว่าทำไม (บางคน) ไม่คิดว่า P และ NC เหมือนกัน เหมือนกับ P และ NP ไม่มีใครรู้วิธีพิสูจน์ว่าทั้งสองแตกต่างกันหรือไม่ แต่มีบางอย่างเกี่ยวกับปัญหาที่ทำให้นักวิทยาศาสตร์คอมพิวเตอร์ (บางคน) คิดว่าพวกเขาเป็น
อีกสิ่งหนึ่งคือNCคือ "เวลาโพลีล็อกในโพลีโนมิลโปรเซสเซอร์หลายตัว" ซึ่งขอให้มีการเร่งความเร็วอย่างมาก แต่ให้หน่วยประมวลผลจำนวนมาก ดังนั้นจึงอาจไม่เหมาะกับแนวความคิดในการใช้งานของแบบคู่ขนาน
โดยเฉพาะถ้าคุณคิดว่าพี
จงระวังให้ดีว่าใครใช้ "อัลกอริธึมขนานที่มีประสิทธิภาพ" เพื่อให้ได้ความหมายอะไร
โดยเฉพาะอย่างยิ่ง class NC ที่มักจะมีชื่อ มีเป็น
ชุดของปัญหาการตัดสินใจที่สามารถตัดสินใจได้ในเวลาโพลีโลจีทิกส์บนคอมพิวเตอร์แบบขนานที่มีตัวประมวลผลพหุนามจำนวนมาก
สิ่งนี้ได้ อะไรจะทำอย่างไรกับว่ามีขั้นตอนวิธีการแบบคู่ขนานสำหรับปัญหาเหล่านี้ที่มีประสิทธิภาพในการปฏิบัติมากขึ้นterms¹:
เติบโต
ตัวอย่างเช่นในโปรเซสเซอร์หลายตัวที่มีหน่วยความจำร่วมกันการแยก CYK สามารถทำได้ควบคู่กับการเร่งความเร็วที่เหมาะสมที่สุดแบบ asymptotically (ดูวิทยานิพนธ์หลักของฉันแม้ว่าการแยกคำแบบไม่มีบริบทจะสมบูรณ์
เนื่องจากการเร่งความเร็วถูกกำหนดด้วยค่าคงที่ที่ จำกัด จำนวนโปรเซสเซอร์² คุณไม่ค่อยพบสิ่งนี้ในทฤษฎีความซับซ้อน ดังนั้นหากคุณต้องการเรียนรู้เกี่ยวกับอัลกอริทึมแบบขนานที่ใช้ในโลกแห่งความเป็นจริงฉันจะแนะนำให้ไปดูที่อื่น
สมมติว่าพรุ่งนี้มีคนค้นพบหลักฐานว่า P = NC ผลของการวิจัยทางวิทยาศาสตร์คอมพิวเตอร์และการใช้งานจริงจะเป็นอย่างไร
นั่นเป็นคำถามที่ถูกทำเครื่องหมายเป็นซ้ำคำถามนี้เพื่อให้ฉันเพียงแค่คิดว่ามันเป็นจริงที่ซ้ำกันและให้คำตอบที่เป็นไปได้อย่างใดอย่างหนึ่ง
เรารู้ว่า NC! = PSPACE ดังนั้นหลักฐานที่ P = NC จะพิสูจน์ P! = PSPACE นั่นอาจไม่ฟังดูเป็นเรื่องใหญ่ แต่เป็นสิ่งสำคัญอย่างหนึ่งสำหรับการวิจัยทางวิทยาศาสตร์คอมพิวเตอร์
ทำไมเราถึงรู้จัก NC! = PSPACE ทีนี้เรารู้ NC k ⊆ DSPACE (O (log k )) ดังนั้นเราสามารถใช้ทฤษฎีลำดับชั้นของอวกาศได้
ในแง่ของการใช้งานจริงการประยุกต์ใช้งานการเขียนโปรแกรมเชิงเส้น (และนูน) อาจดึงดูดความสนใจของสถาปัตยกรรมคู่ขนานที่กำหนดเองพร้อมกับคอมไพเลอร์สำหรับการแปลสูตรการเขียนโปรแกรมเชิงเส้นอย่างมีประสิทธิภาพให้กับฮาร์ดแวร์นั้น