คำถามติดแท็ก ds.algorithms

คำถามเกี่ยวกับคำแนะนำที่กำหนดไว้อย่างดีสำหรับการทำงานให้สำเร็จและการวิเคราะห์ที่เกี่ยวข้องในแง่ของเวลา / หน่วยความจำ / ฯลฯ

2
มีปัญหาที่ทราบว่าสมบูรณ์แบบสมบูรณ์หรือไม่, NP- ยากในแง่ที่แข็งแกร่งหรือมีอัลกอริธึมปลอมเทียม?
ในบทความ (หน้า 503) Garey and Johnson กล่าวว่า: ... อาจมีปัญหา NP-complete ซึ่งไม่ใช่ปัญหา NP-complete ในความหมายที่แข็งแกร่งหรือแก้ไขได้โดยอัลกอริธึมแบบหลอกเทียม - พหุนาม ... ไม่มีใครทราบปัญหาของผู้สมัครที่มีคุณสมบัติดังกล่าวข้างต้น? ฉันคิดว่าคำตอบที่เป็นไปได้สำหรับคำถามนี้อาจเป็นรายการของปัญหาที่เกิดขึ้นโดยสมบูรณ์ในแง่สามัญโดยที่ไม่มีอัลกอริทึม pseudopolynomial เป็นที่รู้จักสำหรับพวกเขา

1
การแลกเปลี่ยนเวลา / ข้อผิดพลาดที่ดีที่สุดสำหรับการแก้ปัญหาโดยประมาณของโปรแกรมเชิงเส้นคืออะไร
เพื่อความเป็นรูปธรรมพิจารณาแผ่นเสียงสำหรับการแก้เกมศูนย์ผลรวมสองผู้เล่นที่ผู้เล่นแต่ละคนมีการกระทำสมมติว่าแต่ละรายการของเมทริกซ์ผลตอบแทนคือAมากที่สุด 1 ในค่าสัมบูรณ์ เพื่อความง่ายเราไม่ได้ตั้งสมมติฐานnnnAAA สมมติว่า runtime สามารถใช้เพื่อประมาณค่าของเกมนี้TTT เทคนิคหนึ่งสำหรับการประมาณค่านี้คือวิธีการปรับปรุงแบบหลายค่า (เรียกว่าการเรียนรู้แบบไม่เสียใจในบริบทนี้) สิ่งนี้ทำให้เกิดข้อผิดพลาดของโดยที่ ˜ Oซ่อนปัจจัยการบันทึกO~(n/T−−−−√)O~(n/T)\tilde O(\sqrt{n/T})O~O~\tilde O ผมไม่ทราบว่าสิ่งที่ภูมิทัศน์ข้อผิดพลาดที่ดีที่สุดสำหรับวิธีการที่รู้จักกันจุดภายในรูปลักษณ์ที่ต้องการ แต่ฉันเดาผิดพลาดเป็นสิ่งที่ต้องการ )O(exp(−T/n3))O(exp⁡(−T/n3))O(\exp(-T/n^3)) วิธีการปรับปรุงการคูณให้ข้อผิดพลาดที่เป็นพหุนามผกผันในTวิธีการจุดภายในให้ข้อผิดพลาดที่มีขนาดเล็กชี้แจงในT ข้อผิดพลาดของสิ่งที่ดีที่สุดของทั้งสองจึงค่อยๆลดลงชั่วขณะหนึ่งจนกระทั่งจุดด้านในจับขึ้นหลังจากนั้นข้อผิดพลาดก็ตกจากหน้าผา สัญชาตญาณของฉันขัดต่อการแลกเปลี่ยนเวลา / ข้อผิดพลาดที่ดีที่สุดเท่าที่จะทำได้ด้วยวิธีนี้TTTTTT คำถามของฉัน : มีอัลกอริทึมสำหรับการโปรแกรมเชิงเส้นโดยประมาณที่ทำให้มุมของเส้นโค้งเวลา / ข้อผิดพลาดการค้าราบรื่นขึ้นหรือไม่? นั่นคืออัลกอริธึมที่ทำอย่างน้อยที่สุดเท่าที่จะทำได้ดีที่สุดสำหรับทั้งสองสำหรับค่าของพารามิเตอร์เวลาที่มีอยู่และมีการแลกเปลี่ยนเวลา / ข้อผิดพลาดที่ค่อนข้างราบรื่น วิธีที่ชาญฉลาดยิ่งขึ้นในการรวมเทคนิคการอัพเดทภายในและการปรับปรุงแบบทวีคูณมากกว่าการใช้สองวิธีที่ดีกว่ามาใช้เป็นวิธีหนึ่งที่จะได้อัลกอริธึมดังกล่าว การอ้างอิง : การปรับปรุงหลายหลากโดยทั่วไป: http://www.cs.princeton.edu/~arora/pubs/MWsurvey.pdf การปรับปรุงแบบทวีคูณสำหรับเกมที่มีผลรวมเป็นศูนย์: http://dx.doi.org/10.1016/0167-6377(95)00032-0 การปรับปรุงหลายหลากสำหรับแผ่นปิด / บรรจุ LPs: http://arxiv.org/PS_cache/arxiv/pdf/0801/0801.1987v1.pdf กระดาษจุดภายในเดิม: http://math.stanford.edu/~lekheng/courses/302/classics/karmarkar.pdf มหาดไทยชี้จากมุมมองทางคณิตศาสตร์ที่ใช้: การเขียนโปรแกรมแบบไม่เชิงเส้นของ Bertsekasหัวข้อ 4.1.1

2
อัลกอริทึมสำหรับ 'k' 'ตัวเลขที่เกิดขึ้นบ่อยที่สุด
ฉันค้นหาอัลกอริธึมที่มีประสิทธิภาพมากที่สุด (การสตรีมมิ่ง ??) ที่บอกองค์ประกอบที่เกิดขึ้นบ่อยที่สุด 'k' ในสตรีมข้อมูล ณ จุดใดก็ได้ โพสต์นี้: อัลกอริทึมสตรีมข้อมูล "หารและพิชิต"ทำให้ฉันสนใจ ตัวอย่างเช่นสมมติว่ามีตัวเลข: (4,3,5,1,6,2,4,3,8,9,1) และฉันค้นหาหมายเลข 3 ที่เกิดขึ้นบ่อยที่สุด (พูด) แล้วฉันควร รับ (3,4,1) เป็นคำตอบ ฉันพยายามค้นหาออนไลน์ แต่ไม่สามารถหาสถานที่ที่ให้แนวทางและบอกว่าดีที่สุด วิธีแก้ปัญหาเล็ก ๆ น้อย ๆ ก็คือการใช้กองหรือต้นไม้ไบนารีแบบสมดุล แต่ฉันคิดว่ามันมีวิธีที่ดีกว่าและฉันอยากรู้ว่ามันมีการบันทึกไว้ที่ใดที่หนึ่งหรือไม่ แก้ไข: ฉันกำลังมองหาอัลกอริทึมที่ให้คำตอบที่ถูกต้องเสมอเมื่อเทียบกับอัลกอริธึม appromixation (ซึ่งหลายอันปรากฏขึ้นในผลการค้นหา) ซึ่งขึ้นอยู่กับการกระจายของข้อมูลไม่ทางใดก็ทางหนึ่ง

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

1
อัลกอริทึมที่เวลาทำงานขึ้นอยู่กับ P กับ NP
มีตัวอย่างที่ทราบชัดเจนของอัลกอริทึมที่มีคุณสมบัติดังกล่าวหรือไม่ถ้าP≠NPP≠NPP\neq NPดังนั้นอัลกอริทึมนี้จะไม่ทำงานในเวลาพหุนามและถ้าP=NPP=NPP=NPจะทำงานในเวลาพหุนามหรือไม่

5
อัลกอริธึมที่รวดเร็วอย่างรวดเร็ว
ผมอยากจะคำนวณtreewidthของกราฟ มีฮิวริสติกที่ดีมากสำหรับปัญหากราฟ NP-hard อื่น ๆ เช่นVF2สำหรับมอร์ฟอร์มอร์ฟิซึ่มย่อยกราฟที่มีโค้ดที่มีอยู่ในigraphเช่น ฉันลองพวกเขาในกราฟของฉันและพบว่ามันทำงานได้อย่างรวดเร็วสำหรับข้อมูลของฉัน มีอัลกอริธึมที่รวดเร็วสำหรับการคำนวณความน่าเชื่อถือในหลอดเลือดดำที่คล้ายกันหรือไม่?

3
การสุ่มซื้อของเราใน P หรือไม่
Letเป็นระดับของปัญหาการตัดสินใจที่มีข้อผิดพลาดสองด้านทางทิศสุ่มขั้นตอนวิธีการทำงานในเวลาO ( F ( n ) )BPTIME(f(n))BPTIME(f(n))\mathsf{BPTIME}(f(n))O(f(n))O(f(n))O(f(n)) เราจะรู้ว่าปัญหาใด ๆดังกล่าวว่าQ ∈ B P T ฉันM E ( n k )แต่Q ∉ D T ฉันM E ( n k ) ? มันไม่มีอยู่จริงพิสูจน์แล้ว?Q∈PQ∈PQ \in \mathsf{P}Q∈BPTIME(nk)Q∈BPTIME(nk)Q \in \mathsf{BPTIME}(n^k)Q∉DTIME(nk)Q∉DTIME(nk)Q \not \in \mathsf{DTIME}(n^k) คำถามนี้ถูกถามใน cs.SE ที่นี่แต่ไม่ได้รับคำตอบที่น่าพอใจ

5
เป็นไปได้ไหมที่จะทดสอบว่าตัวเลขที่คำนวณได้นั้นเป็นจำนวนตรรกยะหรือจำนวนเต็ม?
เป็นไปได้ไหมที่จะทดสอบอัลกอริธึมว่าจำนวนที่คำนวณได้เป็นจำนวนตรรกยะหรือจำนวนเต็ม? ในคำอื่น ๆ ก็จะมีความเป็นไปได้สำหรับห้องสมุดที่ใช้คำนวณตัวเลขเพื่อให้ฟังก์ชั่นisIntegerหรือisRational? ฉันเดาว่ามันเป็นไปไม่ได้และนี่ก็เกี่ยวข้องกับความจริงที่ว่ามันเป็นไปไม่ได้ที่จะทดสอบว่าตัวเลขสองตัวนั้นเท่ากัน แต่ฉันไม่เห็นวิธีที่จะพิสูจน์มัน แก้ไข: จำนวนที่คำนวณได้ถูกกำหนดโดยฟังก์ชันที่สามารถส่งกลับค่าประมาณด้วยเหตุผลด้วยความแม่นยำ :สำหรับใด ๆ0 รับฟังก์ชั่นดังกล่าวเป็นไปได้หรือไม่ที่จะทดสอบว่าหรือ ?xxxfx(ϵ)fx(ϵ)f_x(\epsilon)xxxϵϵ\epsilon|x−fx(ϵ)|≤ϵ|x−fx(ϵ)|≤ϵ|x - f_x(\epsilon)| \leq \epsilonϵ>0ϵ>0\epsilon > 0x∈Qx∈Qx \in \mathrm{Q}x∈Zx∈Zx \in \mathrm{Z}
18 computability  computing-over-reals  lambda-calculus  graph-theory  co.combinatorics  cc.complexity-theory  reference-request  graph-theory  proofs  np-complete  cc.complexity-theory  machine-learning  boolean-functions  combinatory-logic  boolean-formulas  reference-request  approximation-algorithms  optimization  cc.complexity-theory  co.combinatorics  permutations  cc.complexity-theory  cc.complexity-theory  ai.artificial-intel  p-vs-np  relativization  co.combinatorics  permutations  ds.algorithms  algebra  automata-theory  dfa  lo.logic  temporal-logic  linear-temporal-logic  circuit-complexity  lower-bounds  permanent  arithmetic-circuits  determinant  dc.parallel-comp  asymptotics  ds.algorithms  graph-theory  planar-graphs  physics  max-flow  max-flow-min-cut  fl.formal-languages  automata-theory  finite-model-theory  dfa  language-design  soft-question  machine-learning  linear-algebra  db.databases  arithmetic-circuits  ds.algorithms  machine-learning  ds.data-structures  tree  soft-question  security  project-topic  approximation-algorithms  linear-programming  primal-dual  reference-request  graph-theory  graph-algorithms  cr.crypto-security  quantum-computing  gr.group-theory  graph-theory  time-complexity  lower-bounds  matrices  sorting  asymptotics  approximation-algorithms  linear-algebra  matrices  max-cut  graph-theory  graph-algorithms  time-complexity  circuit-complexity  regular-language  graph-algorithms  approximation-algorithms  set-cover  clique  graph-theory  graph-algorithms  approximation-algorithms  clustering  partition-problem  time-complexity  turing-machines  term-rewriting-systems  cc.complexity-theory  time-complexity  nondeterminism 

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

2
การสร้างต้นไม้ใหม่จากคิวรีตัวคั่น
สมมติว่าเป็นต้นไม้ที่มีค่าคงที่ซึ่งเราไม่รู้โครงสร้าง ปัญหาคือการส่งออกต้นไม้โดยขอให้สอบถามรูปแบบ: "โหนดอยู่บนเส้นทางจากโหนดไปยังโหนดหรือไม่" สมมติว่าแต่ละแบบสอบถามสามารถตอบได้ในเวลาคงที่โดย oracle เรารู้ค่าของ , จำนวนโหนดในทรี โดยมีวัตถุประสงค์เพื่อลดเวลาที่ใช้ในการส่งออกต้นไม้ในแง่ของnt x a b n nTTTTTTxxxaaabbbnnnnnn มีอัลกอริทึมสำหรับปัญหาข้างต้นหรือไม่o(n2)o(n2)o(n^2) สมมติว่าระดับของโหนดใด ๆ ในมากที่สุด 3TTT สิ่งที่ฉันรู้ กรณีเส้นผ่าศูนย์กลาง bounded เป็นเรื่องง่าย ถ้าเส้นผ่านศูนย์กลางของต้นไม้คือเราจะได้อัลกอริธึมหารและพิชิต:DDD ต้นไม้ไบนารีใด ๆ ที่มีตัวคั่นที่ดีที่แบ่งต้นไม้เป็นองค์ประกอบที่มีขนาดไม่น้อยกว่า 1 / 3n เลือกจุดสุดยอดใด ๆ x ถ้าเป็นป้ายคั่นที่ดีนั้นและรับคืน ค้นหา 3 ประเทศเพื่อนบ้านทั้งหมดของ x ย้ายไปในทิศทางของเพื่อนบ้านที่มีจำนวนโหนดมากที่สุด ทำซ้ำขั้นตอนที่ 2 กับเพื่อนบ้าน เนื่องจากการค้นหาตัวคั่นใช้ขั้นตอนมากที่สุดเราจึงได้อัลกอริทึมO ( n D log n )DDDO ( …

3
ตัวกำหนดโมดูโล m
สิ่งที่เป็นที่รู้จักกันเป็นกลไกที่มีประสิทธิภาพสำหรับการคำนวณปัจจัยของเมทริกซ์จำนวนเต็มมีค่าสัมประสิทธิ์ในแหวนของสารตกค้างแบบโมดูโลเมตร ตัวเลขmอาจไม่ได้เป็นจำนวนเฉพาะ แต่คอมโพสิต (ดังนั้นการคำนวณจะดำเนินการในวงแหวนไม่ใช่ฟิลด์)Zม.Zm\mathbb{Z}_mม.mmม.mm เท่าที่ฉันรู้ (อ่านด้านล่าง) อัลกอริธึมส่วนใหญ่เป็นการดัดแปลงการกำจัดแบบเกาส์เซียน คำถามเกี่ยวกับประสิทธิภาพการคำนวณของขั้นตอนเหล่านี้ หากเกิดขึ้นว่ามีวิธีการที่แตกต่างกันฉันก็อยากรู้เกี่ยวกับมัน ขอบคุณล่วงหน้า. ปรับปรุง: ฉันขออธิบายที่มาของคำถามนี้ สมมติว่าเป็นจำนวนเฉพาะ ดังนั้นZ mจึงเป็นสนาม และในกรณีนี้เราสามารถทำการคำนวณทั้งหมดโดยใช้ตัวเลขน้อยกว่าmดังนั้นเราจึงมีขอบเขตบนที่ดีในการดำเนินการทั้งหมดเกี่ยวกับตัวเลข: การเพิ่มการคูณและการผกผัน --- การดำเนินการที่จำเป็นทั้งหมดเพื่อเรียกใช้การกำจัดแบบเกาส์ม.mmZม.Zm\mathbb{Z}_mม.mm บนมืออื่น ๆ ที่เราไม่สามารถดำเนินการผกผันสำหรับตัวเลขบางอย่างในกรณีที่ไม่ได้เป็นนายก ดังนั้นเราจึงต้องการเทคนิคบางอย่างในการคำนวณดีเทอร์มิแนนต์ม.mm และตอนนี้ฉันก็อยากรู้ว่ากลเม็ดที่รู้จักกันดีในการทำงานคืออะไร

3
การแก้ Superstring อย่างแน่นอน
สิ่งที่เป็นที่รู้จักกันเกี่ยวกับความซับซ้อนที่แน่นอนของปัญหา superstring ที่สั้นที่สุด? สามารถแก้ไขได้เร็วกว่าO∗(2n)O∗(2n)O^*(2^n)หรือไม่ มีอัลกอริทึมที่รู้จักกันดีในการแก้ปัญหา superstring ที่สั้นที่สุดโดยไม่ลดลงถึง TSP หรือไม่? UPD: O∗(⋅)O∗(⋅)O^*(\cdot)ยับยั้งปัจจัยพหุนาม ปัญหา superstring ที่สั้นที่สุดคือปัญหาที่คำตอบคือสตริงที่สั้นที่สุดซึ่งมีแต่ละสตริงจากชุดของสตริงที่กำหนด คำถามนี้เกี่ยวกับการเพิ่มประสิทธิภาพการขยายตัวของปัญหา NP-hard ชื่อ Shortest Superstring (Garey and Johnson, p.228)


3
CFG แยกโดยใช้
มีความหลากหลายของอัลกอริทึมที่สามารถแยกไวยากรณ์บริบทฟรีในเป็นเวลา การใช้การคูณเมทริกซ์สามารถทำให้เร็วกว่าแบบไม่มีสัญญาณได้O ( n3)O(n3)O(n^3) อย่างไรก็ตามอัลกอริทึมทั้งหมดสำหรับการวิเคราะห์ CFG โดยพลการที่ฉันรู้ว่ามีการใช้พื้นที่ในกรณีที่เลวร้ายที่สุดของ (แม้ว่าเป็นที่ยอมรับฉันไม่มีความคิดว่าการใช้พื้นที่ของอัลกอริทึมการคูณเมทริกซ์นั้นคืออะไร) ฉันสงสัยว่ามีอัลกอริทึมใด ๆ ที่ปรับปรุงจากการใช้พื้นที่นี้หรือไม่ (โดยไม่คำนึงถึงเวลาที่กำหนด)Ω( n2)Ω(n2)\Omega(n^2) คำถามผุดขึ้นในใจของฉันหลังจากเชื่อมโยงจิตใจกับพื้นที่เชื่อมโยงกับอัลกอริธึมการแยก CFG ทั้งหมดที่ฉันรู้ มันอาจจะไม่สนใจในทางปฏิบัติ แต่เป็นเพียงสิ่งที่ฉันอยากรู้Ω ( n 2 )คSG = ND SPCE( n ) ⊆ D SPCE( n2)CSG=NDSPACE(n)⊆DSPACE(n2)CSG = NDSPACE(n) \subseteq DSPACE(n^2)Ω ( n2)Ω(n2)\Omega(n^2)

2
ความซับซ้อนของการคำนวณการแปลงฟูริเยร์แบบแยก?
อะไรคือความซับซ้อน (บน RAM จำนวนเต็มมาตรฐาน) ของการคำนวณการแปลงฟูริเยร์แบบแยกแบบไม่ต่อเนื่องของเวกเตอร์จำนวนจำนวนเต็ม?nnn คลาสสิกอัลกอริทึมสำหรับการแปลงฟูริเยร์ได้อย่างรวดเร็ว , ไม่เหมาะสม[1]ประกอบกับคูลลีย์และทูกีมักจะอธิบายว่าเป็นทำงานในเวลา แต่ที่สำคัญที่สุดของการดำเนินการทางคณิตศาสตร์ดำเนินการในขั้นตอนวิธีนี้เริ่มต้นด้วยการที่ซับซ้อนn th รากของความสามัคคีซึ่งเป็น (ส่วนใหญ่n ) เหตุผลการประเมินผลที่แน่นอนดังนั้นในเวลาคงไม่สมเหตุสมผล ปัญหาเดียวกันเกิดขึ้นกับอัลกอริธึมไร้เดียงสาO ( n 2 ) - (คูณด้วยเมทริกซ์ Vandermonde ของรากที่ซับซ้อนของความสามัคคี)O ( n บันทึกn )O(nlog⁡n)O(n \log n)nnnnnnO ( n2)O(n2)O(n^2) ยังไม่ชัดเจนว่าจะแสดงผลลัพธ์ของ DFT ได้อย่างไร (ในรูปแบบที่มีประโยชน์ใด ๆ ) กล่าวอีกอย่างหนึ่งก็ไม่ชัดเจนว่าการคำนวณ DFT นั้นเป็นไปได้จริง ๆ ! สมมติว่าเราต้องการเพียงความแม่นยำบิตในแต่ละค่าผลลัพธ์ ความซับซ้อนของการคำนวณการแปลงฟูริเยร์แบบแยกเป็นฟังก์ชันของnและbคืออะไร? (เพื่อความเป็นรูปธรรมรู้สึกอิสระที่จะสมมติว่าnคือพลังของ2 )ขbbnnnขbbnnn222 หรือทุกตัวอย่างของ "FFT" ในวรรณคดีจริง ๆ …

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