หมวดหมู่ทฤษฎีความซับซ้อนในการคำนวณและการเชื่อมต่อคอมบิเนทีฟ


17

ฉันพยายามอ่าน“ การออกแบบอัลกอริธึมเชิงฟังก์ชัน ” และต่อมา“ พีชคณิตของการเขียนโปรแกรม ” และมีการติดต่อที่ชัดเจนระหว่างชนิดข้อมูลที่กำหนดซ้ำ (และ polynomially) และวัตถุ combinatorial โดยมีนิยามแบบเรียกซ้ำและต่อมาเป็นผู้นำ ในซีรี่ส์พลังที่เป็นทางการเดียวกัน (หรือการสร้างฟังก์ชั่น) ดังที่แสดงไว้ในบทนำของสปีชีส์ combinatorial (ฉันอ่าน "สปีชี่และผู้รอบรู้และประเภท, โอ้มาย! ")

ดังนั้นสำหรับคำถามแรกมีวิธีการกู้คืนสมการสร้าง (เรียกซ้ำ) จากชุดพลังงานหรือไม่? นั่นคือความคิดในภายหลัง

ฉันสนใจแนวคิดของ algebras เริ่มต้นและ co-algebras สุดท้ายในรูปแบบของ“ การกำหนดขั้นตอนเกี่ยวกับโครงสร้างข้อมูล” มีกฎในทางปฏิบัติบางประการในการเขียนโปรแกรมเชิงฟังก์ชันที่เกี่ยวข้องกับองค์ประกอบผลิตภัณฑ์ของการทำแผนที่ระหว่างจีบราส์และที่คล้ายกันซึ่งได้อธิบายไว้ตัวอย่างในบทช่วยสอนนี้. สำหรับฉันแล้วดูเหมือนว่านี่อาจเป็นวิธีที่ทรงพลังทีเดียวในการเข้าหาความซับซ้อนและยกตัวอย่างเช่นมันดูเหมือนตรงไปตรงมามากที่จะกู้คืนทฤษฎีบทของอาจารย์ในบริบทเช่นนั้น (ฉันหมายความว่าคุณต้องทำข้อโต้แย้งเดียวกัน และ catamorphism ที่ไม่เหมือนใครจากพีชคณิตเริ่มต้นและความจริง (ฉันเข้าใจผิด?) ว่าพีชคณิตระหว่าง A และ FA สำหรับ F-polynomial functor isomorphic ทำให้ฉันมองว่าวิธีการดังกล่าวอาจมีประโยชน์มากมายในการวิเคราะห์ความซับซ้อนของ การดำเนินงานมากกว่าโครงสร้างข้อมูล

จากมุมมองของภาคปฏิบัติดูเหมือนว่ากฎฟิวชั่น (โดยทั่วไปวิธีในการเขียน morphisms ของพีชคณิตกับอีกอันหนึ่ง morphisms ของ coalgebra และ morphisms ทั่วไป) เป็นเทคนิคการเพิ่มประสิทธิภาพที่มีประสิทธิภาพมากสำหรับการแปลงโปรแกรมและการปรับโครงสร้างใหม่ ฉันคิดว่าการใช้ประโยชน์เต็มที่ของกฎเหล่านี้สามารถสร้างโปรแกรมที่ดีที่สุด (ไม่มีโครงสร้างข้อมูลกลางที่ไม่จำเป็นหรือการดำเนินการพิเศษอื่น ๆ )

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

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


5
คุณสามารถฟอร์แมตใหม่เพื่อให้สิ่งนี้สามารถอ่านได้หรือไม่?
เลฟเรย์ซิ

11
มีสองปัญหาที่อาจเกิดขึ้นกับความคิดของคุณ ประการแรกโครงสร้างข้อมูลไม่สามารถแสดงได้โดยใช้พีชคณิตเริ่มต้น กราฟทั่วไปหรือโครงสร้างตัวชี้ที่ซับซ้อนจะไม่เป็นพีชคณิตเริ่มต้นของ functor ใด ๆ ประการที่สองกฎฟิวชั่นและอื่น ๆ โดยทั่วไปจะปรับปรุงประสิทธิภาพของรหัสเท่านั้นแทนที่จะเปลี่ยน O (-) - ประสิทธิภาพของอัลกอริทึม (แม้ว่าฉันจะรู้ข้อยกเว้น)
Dave Clarke

ขอบคุณเดฟฉันกำลังพยายามอ่านหนังสือทฤษฎีเกมอัลกอริทึมและอัลกอริทึมในการรักษาแบบดั้งเดิมส่วนใหญ่จะระบุการดำเนินการเพื่อที่จะพูดและก็สงสัยว่ามีวิธีทั่วไปที่จะเข้าหาพวกเขาและ algebras เริ่มต้น ฯลฯ แต่การขาดการติดต่อกันระหว่างโครงสร้างข้อมูลทั่วไปและหน้าที่เป็นปัญหา @sclv: ขอบคุณฉันจะดูมัน!
สเตฟานเปตรอฟ

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

คำตอบ:


7

ความคิดเห็นของ Dave Clarke นั้นสำคัญมาก โดยทั่วไปฟิวชั่นจะไม่เปลี่ยนประสิทธิภาพ O (-) อย่างไรก็ตามสิ่งที่น่าสนใจเป็นพิเศษก็คือ Liu, Cheng และ Hudak ทำงานเกี่ยวกับ Causal Commutative Arrows โปรแกรมที่เขียนด้วยโปรแกรมเหล่านี้สามารถปรับให้เหมาะสมได้ส่วนหนึ่งผ่านการรวมแบบสตรีมไปยังลูปเดียวที่ไม่มีการจัดสรรหน่วยความจำแบบไดนามิกและโครงสร้างระดับกลาง: http://haskell.cs.yale.edu/?post_type=publication&p=72


6

Combinatorial Species ของ Joyal, "การก่อสร้างที่ยอมรับได้" ของ Sedgwick / Falojet ของ Analytic Combinatorics และ Yorgey Haskell Species นั้นดีทั้งหมด

Power Series Power Seriousโดย McIlroy จากชื่อเสียง UNIX ต่างก็ต้องอ่านเช่นเดียวกับบทที่เกี่ยวกับการสำรวจใน Haskell Road to Logic Maths และการเขียนโปรแกรม

ผลงานทางประวัติศาสตร์โดยBuchiเรียบเรียงโดย Saunders MacLane และChomsky / Schützenbergerทำให้การเชื่อมต่อระหว่างซีรีย์พาวเวอร์, จีบราส์, ต้นไม้และออโตมาตา จำกัด วิธีการโอนเมทริกซ์ที่อธิบายในสแตนลีย์แสดงให้คุณเห็นวิธีการคำนวณการสร้างฟังก์ชั่นจากออโตมาต้าถ่วงน้ำหนัก

ฉันยังคงหาวิธีที่ดีที่สุดในการแปลระหว่างโดเมน (GF น้ำหนักออโตมาต้าพีชคณิตต้นไม้การเรียกซ้ำ) อย่างมีประสิทธิภาพ ตอนนี้ฉันกำลังปอกเปลือกเพื่อ SymPy เนื่องจากยังไม่มีแพคเกจสัญลักษณ์ Haskell ที่ดี

โดยส่วนตัวฉันได้นำกราฟการวนซ้ำของการสิ้นสุดการคำนวณแล้วคำนวณชุดการควบคุมขั้นต่ำเพื่อให้ได้การค้นหากล่องดำที่ถูกต้อง http://oeis.org/A186202ไม่แน่ใจว่าผลลัพธ์ความซับซ้อนประเภทใดที่คุณกำลังค้นหา แต่เทคนิคนั้นมีประสิทธิภาพมากในการตรวจสอบการลดระดับของชุด จำกัด ใด ๆ

- ต้นฉบับ 2 ต.ค. '14 เวลา 15:37 น. -

ลองดูที่วิทยานิพนธ์ของ Brent Yorgey ซึ่งติดตามบทความของเขาที่คุณอ้างถึง http://www.cis.upenn.edu/%7Ebyorgey/hosted/thesis.pdf

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