คำถามติดแท็ก greedy-algorithms

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

1
อัลกอริทึมโลภสามารถแก้ไขปัญหาการเปลี่ยนเหรียญได้เมื่อใด
ให้ชุดเหรียญที่มีค่าแตกต่างกันและค่า v คุณต้องการค้นหาจำนวนเหรียญที่น้อยที่สุดที่จำเป็นในการแทนค่า vc1,...,cnc1,...,cnc1, ... , cn เช่นสำหรับชุดเหรียญ 1,5,10,20 สิ่งนี้ให้ 2 เหรียญสำหรับผลรวม 6 และ 6 เหรียญสำหรับผลรวม 19 คำถามหลักของฉันคือเมื่อสามารถใช้กลยุทธ์โลภเพื่อแก้ปัญหานี้ได้อย่างไร คะแนนโบนัส: ข้อความนี้ไม่ถูกต้องธรรมดาหรือไม่ (จาก: จะทราบได้อย่างไรว่าอัลกอริทึมโลภเพียงพอสำหรับปัญหาการเปลี่ยนเหรียญขั้นต่ำหรือไม่ ) อย่างไรก็ตามบทความนี้มีข้อพิสูจน์ว่าหากอัลกอริทึมโลภใช้ได้กับค่า denom ที่ใหญ่ที่สุด + ค่า denom ที่ใหญ่เป็นอันดับสองมันก็ใช้ได้กับมันทั้งหมดและมันแสดงให้เห็นเพียงแค่ใช้อัลกอริธึมโลภเทียบกับอัลกอริธึม DP ที่เหมาะสมที่สุด http://www.cs.cornell.edu/~kozen/papers/change.pdf ps โปรดทราบว่าคำตอบในหัวข้อนั้นพังอย่างไม่น่าเชื่อ - นั่นคือเหตุผลที่ฉันถามคำถามใหม่

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

4
จะใช้อัลกอริทึมแบบโลภเพื่อค้นหาลำดับที่ไม่ลดลงใกล้เคียงกับลำดับที่ได้อย่างไร
a1,…,ana1,…,ana_1, \ldots, a_n000lllaiaia_ibibib_i000lllbibib_iสูงสุด( | a1- ข1| ,…, | n- ขn| )max(|a1−b1|,…,|an−bn|)\max(|a_1-b_1|, \ldots, |a_n-b_n|)ขผมbib_iO ( n l√4)O(nl4)O(n\sqrt[4]{l}) ฉันไม่มีเงื่อนงำอย่างจริงใจว่าจะเริ่มแก้ไขคำถามนี้อย่างไร ดูเหมือนว่าฉันจะถามคำถามเกี่ยวกับการเขียนโปรแกรมแบบไดนามิก แต่อาจารย์บอกว่าควรแก้ไขได้โดยใช้อัลกอริทึมโลภ มันคงจะดีมากถ้ามีคนชี้ให้ฉันไปในทิศทางที่ถูกต้องด้วยการบอกใบ้เล็ก ๆ

2
ความถูกต้อง - พิสูจน์ความโลภ - อัลกอริธึมสำหรับจุดสุดยอดขั้นต่ำของต้นไม้
มีอัลกอริทึมโลภสำหรับการค้นหาจุดสุดยอดขั้นต่ำของต้นไม้ซึ่งใช้ DFS traversal สำหรับแต่ละใบไม้ของต้นไม้ให้เลือกพาเรนต์ของมัน (เช่นพาเรนต์อยู่ในฝาครอบจุดต่ำสุด) สำหรับแต่ละโหนดภายใน: หากไม่มีโหนดย่อยใด ๆ ให้เลือกโหนดนี้ ฉันจะพิสูจน์ได้อย่างไรว่ากลยุทธ์โลภนี้ให้คำตอบที่ดีที่สุด? มีจุดยอดที่เล็กกว่าขนาดที่อัลกอริธึมข้างต้นสร้างขึ้นหรือไม่?

1
การแยกประเภทการปรับแต่ง
ที่ทำงานฉันได้รับมอบหมายให้อนุมานข้อมูลบางประเภทเกี่ยวกับภาษาแบบไดนามิก ฉันเขียนลำดับของข้อความไปยังletนิพจน์ที่ซ้อนกันเช่น: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } เนื่องจากฉันเริ่มต้นจากข้อมูลประเภททั่วไปและพยายามอนุมานประเภทที่เฉพาะเจาะจงมากขึ้นตัวเลือกที่เป็นธรรมชาติคือประเภทการปรับแต่ง ตัวอย่างเช่นตัวดำเนินการตามเงื่อนไขส่งคืนการรวมของประเภทของสาขาที่เป็นจริงและเท็จ …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

1
การเลือกคุณลักษณะที่คล้ายต้นไม้ตัดสินใจที่มีความยาวคงที่เพื่อลดประสิทธิภาพการค้นหาโดยเฉลี่ย
ฉันมีแบบสอบถามที่ซับซ้อนใช้ในการค้นหาชุดข้อมูลเพื่อหา\} แต่ละแบบสอบถามใช้เวลาเฉลี่ยดังนั้นเวลาโดยรวมในการค้นหาเชิงเส้นคือ. ฉันสามารถแบ่งแบบสอบถามออกเป็นย่อยที่ง่ายกว่าและค้นหา และที่{} แต่ละแบบสอบถามย่อยรวดเร็วยิ่งขึ้นในการคำนวณดังนั้นโดยรวมก็จะเร็วขึ้นเพื่อหาแล้วใช้เพื่อหา{}QQQSSSHแน่นอน= { s ∈ S| ที่ Q ( s ) เป็น True }Hexact={s∈S∣where Q(s) is True}H_\text{exact} = \{s \in S \mid \text{where $Q(s)$ is True}\}เสื้อttt ⋅ | S|t⋅|S|t\cdot |S|Hประมาณ= { s ∈ S∣ ∀QJ( s ) คือ True }Happrox={s∈S∣∀qj(s)is True}H_\text{approx} = \{s\in S \mid \forall q_j(s) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.