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

อัลกอริทึมเป็นลำดับขั้นตอนที่กำหนดไว้อย่างดีซึ่งกำหนดวิธีแก้ปัญหาแบบนามธรรมให้กับปัญหา ใช้แท็กนี้เมื่อปัญหาของคุณเกี่ยวข้องกับการออกแบบและวิเคราะห์อัลกอริทึม

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

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

1
อัลกอริทึมใดที่จะคำนวณตัวเลือกสูงสุดจากสองชุด
ด้วยเวกเตอร์จำนวนเต็มสองตัวที่มีความยาวไม่เท่ากันฉันจะกำหนดผลลัพธ์สูงสุดได้อย่างไรจากการเลือกจำนวนสูงสุดระหว่างคู่ที่สอดคล้องกันระหว่างเวกเตอร์สองตัวที่มีค่าศูนย์พิเศษแทรกลงในเวกเตอร์ที่สั้นกว่า ตัวอย่างเช่นให้พิจารณาเวกเตอร์สองตัวต่อไปนี้เป็นอินพุต: [8 1 4 5] [7 3 6] ตัวเลือกสำหรับการแทรกศูนย์และผลรวมคือ: [0 7 3 6] => Maximums: [8 7 4 6] => Sum is: 25 [7 0 3 6] => Maximums: [8 1 4 6] => Sum is: 19 [7 3 0 6] => Maximums: [8 3 4 6] => Sum …

3
หนังสืออัลกอริทึมในหัวข้อต่างๆ
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ฉันได้รับมอบหมายให้สร้างห้องสมุดหนังสือเกี่ยวกับอัลกอริทึมสำหรับ บริษัท ขนาดเล็กของเรา (ประมาณ 15 คน) งบประมาณมากกว่า 5k แต่น้อยกว่า 10k แน่นอนดังนั้นฉันสามารถซื้อหนังสือได้พอใช้ ทุกคนที่นี่มีอย่างน้อยปริญญาตรีใน CS หรือสาขาที่เกี่ยวข้องอย่างใกล้ชิดดังนั้นในขณะที่ฉันจะได้รับหนังสือเรียนพื้นฐานเช่น Cormen ฉันสนใจหนังสือที่ดีในหัวข้อขั้นสูง (ฉันจะได้รับเล่ม 4 ของ Knuth, BTW) รายการหัวข้อบางส่วนจะเป็น: ขั้นตอนวิธีการเรียงลำดับ อัลกอริธึมกราฟ อัลกอริธึมสตริง อัลกอริทึมแบบสุ่ม อัลกอริทึมแบบกระจาย อัลกอริทึม Combinatorial เป็นต้น โดยพื้นฐานแล้วฉันกำลังมองหาคำแนะนำที่ดีเกี่ยวกับหนังสือในหัวข้อที่สำคัญภายใน CS ที่เกี่ยวข้องกับอัลกอริทึมและโครงสร้างข้อมูล โดยเฉพาะอย่างยิ่งสิ่งที่นอกเหนือไปจากสิ่งที่ครอบคลุมโดยทั่วไปในชั้นเรียนอัลกอริทึมและโครงสร้างข้อมูลซึ่งเป็นส่วนหนึ่งของปริญญาตรีในโรงเรียนที่ดี ฉันรู้ว่าคำถามนั้นค่อนข้างคลุมเครือเนื่องจากฉันกำลังมองหาวัสดุที่มีประโยชน์โดยทั่วไป ซอฟต์แวร์ที่เราพัฒนานั้นส่วนใหญ่เป็นระบบที่จัดการกับข้อมูลจำนวนมาก อุดมคติก็คือการค้นหาสิ่งใดก็ตามที่จะครอบคลุมโครงสร้างและอัลกอริธึมเจ๋ง ๆ ล่าสุดที่คนส่วนใหญ่อาจไม่เคยได้ยินมาก่อน แก้ไข: นี่คือหนังสือเบื้องต้นที่ฉันคิดว่าฉันควรได้รับ: รู้เบื้องต้นเกี่ยวกับอัลกอริทึมโดย Cormen และคณะ การออกแบบอัลกอริทึมโดย Kleinberg, Tardos …

4
การค้นหาชุด "ลายนิ้วมือ"
สมมติว่าเรามี 10 คนแต่ละคนมีรายการหนังสือที่ชื่นชอบ สำหรับบุคคลที่ได้รับ X ฉันต้องการค้นหาชุดย่อยพิเศษของหนังสือของ X ที่ X ชื่นชอบโดย X เท่านั้นนั่นคือไม่มีบุคคลอื่นที่ชอบหนังสือทั้งหมดในชุดย่อยพิเศษของ X ฉันคิดว่าเซตย่อยพิเศษนี้เป็น "ลายนิ้วมือ" ที่ไม่ซ้ำกันสำหรับ X ฉันขอขอบคุณข้อเสนอแนะเกี่ยวกับวิธีการค้นหาชุดดังกล่าว (แม้ว่าสิ่งนี้จะอ่านได้เหมือนปัญหาการบ้าน แต่เกี่ยวข้องกับปัญหาในการวิจัยทางชีววิทยาที่ฉันพยายามแก้ไข)
11 algorithms  sets 

1
กำกับการค้นหายูเนี่ยน
พิจารณากราฟกำกับGGGที่หนึ่งสามารถเพิ่มขอบแบบไดนามิกและทำแบบสอบถามเฉพาะบางอย่าง ตัวอย่าง: ฟอเรสต์ disjoint-set พิจารณาชุดคำถามต่อไปนี้: arrow(u, v) equiv(u, v) find(u) คนแรกที่จะเพิ่มลูกศรจากกราฟที่สองตัดสินใจถ้ามึง↔ *วีคนสุดท้ายพบตัวแทนที่ยอมรับของชั้นสมมูลของ↔ * , เช่นR ( U )ดังกล่าวว่ายู↔ *วีหมายถึงR ( V ) = R ( U )u→vu→vu→vu↔∗vu↔∗vu↔^*v↔∗↔∗↔^*r(u)r(u)r(u)u↔∗vu↔∗vu↔^*vr(v)=r(u)r(v)=r(u)r(v)=r(u) มีความเป็นอัลกอริทึมที่รู้จักกันดีโดยใช้โครงสร้างข้อมูลป่าเคล็ดชุดดำเนินการคำสั่งเหล่านี้ในกึ่งคงตัดจำหน่ายซับซ้อนคือ(n)) หมายเหตุว่าในกรณีนี้จะดำเนินการใช้O(α(n))O(α(n))O(α(n))equivfind ตัวแปรที่ซับซ้อนมากขึ้น ตอนนี้ฉันสนใจปัญหาที่ซับซ้อนยิ่งขึ้นซึ่งทิศทางสำคัญ: arrow(u, v) confl(u, v) find(u) คนแรกที่จะเพิ่มลูกศรวินาทีตัดสินใจถ้ามีโหนดสามารถเข้าถึงได้จากทั้งและคือ←วี อันสุดท้ายควรส่งคืนออบเจคต์เช่นที่หมายถึงโดยที่ควรคำนวณได้ง่าย (เพื่อที่จะพูดคำนวณ) เป้าหมายคือการหาโครงสร้างข้อมูลที่ดีเพื่อให้การดำเนินการเหล่านี้รวดเร็วu→vu→vu→vwwwuuuvvvu→∗←∗vu→∗←∗vu→^*←^*vr(u)r(u)r(u)u→∗←∗vu→∗←∗vu→^*←^*vr(u)∙r(v)r(u)∙r(v)r(u) \bullet r(v)∙∙\bulletconfl รอบ กราฟสามารถมีรอบ ฉันไม่ทราบว่ามีวิธีในการคำนวณส่วนประกอบที่เชื่อมต่ออย่างมีประสิทธิภาพและเพิ่มขึ้นหรือไม่เพื่อพิจารณา DAG สำหรับปัญหาหลักเท่านั้น แน่นอนฉันจะขอบคุณวิธีแก้ปัญหาสำหรับ DAG ด้วย …

3
“ เหนี่ยวนำ” และ“ ซ้ำ ๆ ” มีความหมายคล้ายกันมากหรือไม่?
"เหนี่ยวนำ" และ "เรียกซ้ำ" หมายถึงคล้ายกันมากหรือไม่ ตัวอย่างเช่นหากมีอัลกอริทึมที่กำหนดเวกเตอร์ n-dim โดยพิจารณาส่วนประกอบ k + 1 แรกตามองค์ประกอบ k แรกที่ได้รับการพิจารณาและเริ่มต้นด้วยองค์ประกอบแรกคุณจะเรียกมันว่าทำงานซ้ำหรือเหนี่ยวนำได้หรือไม่? ฉันใช้คำว่า "ซ้ำซาก" แต่วันนี้มีคนบอกว่า "เหนี่ยวนำ"

1
กราฟที่ทำให้ DFS และ BFS ประมวลผลโหนดตามลำดับที่แน่นอน
สำหรับกราฟบางอันกระบวนการอัลกอริทึมการค้นหา DFS และ BFS ในลำดับเดียวกันโดยมีเงื่อนไขว่าพวกเขาทั้งคู่เริ่มต้นที่โหนดเดียวกัน สองตัวอย่างคือกราฟที่เป็นเส้นทางและกราฟที่มีรูปร่างเป็นรูปดาว (ต้นไม้ที่มีความลึกพร้อมจำนวนลูกโดยพลการ) มีวิธีในการจัดหมวดหมู่กราฟที่ตอบสนองคุณสมบัตินี้หรือไม่?111

1
ผูกพันกับพื้นที่สำหรับอัลกอริทึมการเลือก?
มีอัลกอริทึมการเลือกที่แย่ที่สุดที่รู้จักกันดีในการค้นหาองค์ประกอบที่ใหญ่ที่สุดของในอาร์เรย์ของจำนวนเต็ม มันใช้วิธีการมัธยฐานของมัธยฐานเพื่อหาเดือยที่ดีพอแบ่งพาร์ติชันอาร์เรย์ที่เข้ามาและจากนั้นทำต่อไปเรื่อย ๆ เพื่อค้นหาองค์ประกอบที่ใหญ่ที่สุดของk kO ( n )O(n)O(n) kkkkkk เกิดอะไรขึ้นถ้าเราไม่ได้รับอนุญาตให้สัมผัสอาร์เรย์ใส่เท่าใดพื้นที่พิเศษจะต้องเพื่อที่จะหาสิ่งที่ 'TH องค์ประกอบที่ใหญ่ที่สุดในเวลาหรือไม่ เราสามารถหาองค์ประกอบที่ใหญ่ที่สุดของในพื้นที่พิเศษและยังคงรันไทม์ไหม? ยกตัวอย่างเช่นการหาองค์ประกอบสูงสุดหรือต่ำสุดใช้เวลาเวลาและพื้นที่ O ( n ) k O ( 1 ) O ( n ) O ( n ) O ( 1 )kkkO ( n )O(n)O(n)kkkO ( 1 )O(1)O(1)O ( n )O(n)O(n)O ( n )O(n)O(n)O ( 1 )O(1)O(1) …

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
การวิเคราะห์ที่เข้มงวดขึ้นของอัลกอริทึมของBorůvkaที่ถูกแก้ไข
อัลกอริทึมของBorůvkaเป็นหนึ่งในอัลกอริธึมมาตรฐานสำหรับการคำนวณทรีสแปนนิ่งขั้นต่ำสำหรับกราฟด้วยmG=(V,E)G=(V,E)G = (V,E)|V|=n,|E|=m|V|=n,|E|=m|V| = n, |E| = m รหัสหลอกคือ: MST T = empty tree Begin with each vertex as a component While number of components > 1 For each component c let e = minimum edge out of component c if e is not in T add e to T …

2
การเขียนโปรแกรมแบบไดนามิกที่มีปัญหาย่อยจำนวนมาก
การเขียนโปรแกรมแบบไดนามิกที่มีปัญหาย่อยจำนวนมาก ดังนั้นฉันพยายามแก้ไขปัญหานี้จาก Interview Street: ตารางเดิน (คะแนน 50 คะแนน) คุณกำลังตั้งอยู่ในตารางมิติที่ตำแหน่งX_n) ขนาดของกริดคือ ) ในขั้นตอนเดียวคุณสามารถเดินไปข้างหน้าหรือข้างหลังหนึ่งก้าวในมิติใด ๆ ก็ได้ (ดังนั้นจะมีการเคลื่อนไหวต่าง ๆ ที่เป็นไปได้เสมอ) คุณสามารถทำตามขั้นตอนหลายวิธีเช่นนี้โดยที่คุณไม่ออกจากกริดในทุกจุด คุณออกจากตารางถ้าใด ๆทั้งหรือD_i( x 1 , x 2 , … , x N ) ( D 1 , D 2 , … , D N N 2 N M x ฉันx ฉัน ≤ …

2
ลดองค์ประกอบสูงสุดของผลรวมของเวกเตอร์
ฉันต้องการเรียนรู้บางอย่างเกี่ยวกับปัญหาการปรับให้เหมาะสมนี้: สำหรับตัวเลขทั้งหมดที่ไม่เป็นลบให้หาฟังก์ชันเพื่อลดนิพจน์ai,j,kai,j,ka_{i,j,k}fff maxk∑iai,f(i),kmaxk∑iai,f(i),k\max_k \sum_i a_{i,f(i),k} An example using a different formulation might make it clearer: You're given a set of sets of vectors like { {(3, 0, 0, 0, 0), (1, 0, 2, 0, 0)}, {(0, 1, 0, 0, 0), (0, 0, 0, 1, 0)}, {(0, 0, 0, 2, 0), …

4
อัลกอริทึมที่มีประสิทธิภาพที่สุดในการพิมพ์ 1-100 โดยใช้ตัวสร้างตัวเลขสุ่มที่กำหนด
เราได้รับตัวสร้างตัวเลขสุ่มRandNum50ซึ่งสร้างจำนวนเต็มแบบสุ่มในช่วงที่ 1–50 เราอาจใช้ตัวสร้างตัวเลขสุ่มนี้เท่านั้นในการสร้างและพิมพ์จำนวนเต็มทั้งหมดจาก 1 ถึง 100 ตามลำดับแบบสุ่ม ทุกหมายเลขจะต้องมาหนึ่งครั้งและความน่าจะเป็นของหมายเลขใด ๆ ที่เกิดขึ้น ณ สถานที่ใด ๆ จะต้องเท่ากัน อัลกอริทึมที่มีประสิทธิภาพที่สุดสำหรับสิ่งนี้คืออะไร?

1
ประมวลผลอาร์เรย์ล่วงหน้าเพื่อนับองค์ประกอบในชิ้น (ลดเหลือ RMQ?)
รับอาร์เรย์1 , ... , nจำนวนธรรมชาติ≤ kที่kเป็นค่าคงที่ฉันต้องการคำตอบในO ( 1 )คำสั่งของรูปแบบ: "กี่ครั้งไม่เมตรปรากฏในอาร์เรย์ระหว่างดัชนีฉันและเจ "a1, … , ana1,…,ana_1,\ldots,a_n≤ k≤k\leq kkkkO ( 1 )O(1)O(1)ม.mmiiijjj อาร์เรย์ควรถูกประมวลผลล่วงหน้าในเวลาเชิงเส้น โดยเฉพาะอย่างยิ่งฉันต้องการทราบว่ามีการลดลงของการค้นหาขั้นต่ำของช่วงหรือไม่ นี่เทียบเท่ากับ RMQ ในกรณีที่และคุณต้องการสอบถามจำนวนคนภายในช่วงเวลา ดังนั้นเราจึงสามารถใช้มัน ฉันไม่สามารถตอบคำถามของตัวเองได้เนื่องจากข้อ จำกัด ของ SEk=1k=1k=1

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