คำถามติดแท็ก in-place

3
อัลกอริธึมแบบแทนที่สำหรับการแทรกอาร์เรย์
คุณได้รับองค์ประกอบมากมาย2n2n2n a1,a2,…,an,b1,b2,…bna1,a2,…,an,b1,b2,…bna_1, a_2, \dots, a_n, b_1, b_2, \dots b_n ภารกิจคือการสอดแทรกอาร์เรย์โดยใช้อัลกอริทึมแบบแทนที่ที่อาร์เรย์ผลลัพธ์จะมีลักษณะดังนี้ b1,a1,b2,a2,…,bn,anb1,a1,b2,a2,…,bn,anb_1, a_1, b_2, a_2, \dots , b_n, a_n หากความต้องการในสถานที่ไม่มีเราสามารถสร้างอาร์เรย์และองค์ประกอบการคัดลอกใหม่ที่ให้อัลกอริทึมเวลาO(n)O(n)\mathcal{O}(n) ด้วยความต้องการในสถานที่แบ่งและพิชิตอัลกอริทึมกระแทกขึ้นขั้นตอนวิธีการที่จะเป็นlog)θ(nlogn)θ(nlog⁡n)\theta(n \log n) ดังนั้นคำถามคือ: มีอัลกอริธึมเวลาซึ่งอยู่ในสถานที่ด้วยหรือไม่?O(n)O(n)\mathcal{O}(n) (หมายเหตุ: คุณสามารถสันนิษฐานได้ว่ารูปแบบ WORD RAM ราคาเท่ากันดังนั้นจึงแปลเป็นจำกัด พื้นที่)O(1)O(1)\mathcal{O}(1)

3
กรณีที่เลวร้ายที่สุดในการจัดเรียงที่มั่นคง?
ฉันมีปัญหาในการค้นหาแหล่งข้อมูลที่ดีซึ่งเป็นกรณีที่แย่ที่สุดในขั้นตอนวิธีการเรียงลำดับที่เสถียร ไม่มีใครรู้แหล่งข้อมูลที่ดีบ้างไหม?O(nlnn)O(nln⁡n)O(n \ln n) เพียงเตือนความจำในสถานที่หมายความว่ามันใช้อาร์เรย์ส่งผ่านและขั้นตอนวิธีการเรียงลำดับได้รับอนุญาตเท่านั้นที่จะใช้พื้นที่พิเศษคงที่ Stable หมายถึงองค์ประกอบที่มีคีย์เดียวกันปรากฏในลำดับเดียวกันในอาร์เรย์ที่เรียงลำดับเหมือนที่เคยเป็นในต้นฉบับ ตัวอย่างเช่นการเรียงลำดับที่ไร้เดียงสาเป็นกรณีที่เลวร้ายที่สุดและเสถียร แต่ใช้พื้นที่พิเศษquicksort มาตรฐานสามารถทำมั่นคงอยู่ในสถานที่ แต่ที่เลวร้ายที่สุดกรณี2) มี Heapsort อยู่กรณีที่เลวร้ายที่สุดแต่ไม่เสถียร Wikipediaมีแผนภูมิที่ดีซึ่งอัลกอริทึมการเรียงลำดับมีข้อบกพร่องใด โปรดสังเกตว่าไม่มีอัลกอริทึมการเรียงลำดับที่แสดงรายการที่มีเงื่อนไขความเสถียรทั้งสามกรณีที่เลวร้ายที่สุดและอยู่ในตำแหน่งO(nlnn)O(nln⁡n)O(n \ln n)O(n)O(n)O(n)O(n2)O(n2)O(n^2)O(nlnn)O(nln⁡n)O(n \ln n)O(nlnn)O(nln⁡n)O(n \ln n) ฉันได้พบเอกสารที่เรียกว่า"การผสานการใช้งานจริงในสถานที่"โดย Katajainen, Pasanen และ Teuhola ซึ่งอ้างว่ามีกรณีที่เลวร้ายที่สุดในรูปแบบการรวมตัวแปรที่เสถียร ถ้าฉันเข้าใจผลลัพธ์ของพวกเขาถูกต้องพวกมันจะใช้การรวม (bottom-up?) ซ้ำในของอาร์เรย์และหลังของแถวและใช้ตัวที่สองเป็นพื้นที่เริ่มต้นในการรวม ฉันยังคงอ่านผ่านทางนี้ดังนั้นข้อมูลเพิ่มเติมเกี่ยวกับว่าฉันตีความผลของพวกเขาอย่างถูกต้องชื่นชมO(nlnn)O(nln⁡n)O(n \ln n)1414\frac{1}{4}1212\frac{1}{2}1414\frac{1}{4} ฉันก็จะสนใจในกรณีที่เลวร้ายที่สุดในสถานที่ที่มั่นคงอย่างรวดเร็ว จากสิ่งที่ฉันเข้าใจการแก้ไข quicksort เป็นกรณีที่เลวร้ายที่สุดต้องเลือกเดือยที่เหมาะสมซึ่งจะทำลายเสถียรภาพที่ปกติแล้วมันจะสนุกO(nlnn)O(nln⁡n)O(n \ln n)O(nlnn)O(nln⁡n)O(n \ln n) นี่เป็นความสนใจทางทฤษฎีอย่างแท้จริงและฉันไม่มีการใช้งานจริง ฉันแค่อยากจะรู้ว่าอัลกอริทึมที่มีคุณสมบัติทั้งสามนี้

3
อัลกอริธึมการเรียงลำดับพื้นที่คงที่ที่มีประสิทธิภาพที่สุดคืออะไร?
ฉันกำลังมองหาอัลกอริธึมการเรียงลำดับสำหรับ int arrays ที่ไม่ได้จัดสรรไบต์ใด ๆ นอกจากขนาดของอาเรย์และ จำกัด เพียงสองคำสั่ง: SWAP: สลับดัชนีถัดไปกับดัชนีปัจจุบัน ย้าย: เลื่อนเคอร์เซอร์ไปที่ดัชนี +1 หรือ -1; นั่นคือคุณไม่สามารถสลับดัชนีเพื่อนบ้านไม่ใช่หรือสลับดัชนีหลังจากที่คุณเพียงแค่สลับดัชนี100 10อัลกอริธึมที่มีประสิทธิภาพมากที่สุดคืออะไรคือขั้นตอนที่ใช้การเคลื่อนไหวน้อยลง

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