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

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

1
ค้นหาเส้นทางที่สั้นที่สุดในกราฟ unipathic ที่มีน้ำหนัก
กราฟกำกับกล่าวจะunipathicถ้าสองจุดและในกราฟมีที่มากที่สุดเส้นทางหนึ่งที่ง่ายจากจะวีuuuvvvG=(V,E)G=(V,E)G=(V,E)uuuvvv สมมติว่าฉันได้รับกราฟ unipathicซึ่งขอบแต่ละด้านมีน้ำหนักเป็นบวกหรือลบ แต่ไม่มีวงจรน้ำหนักเชิงลบGGG จากนี้ผมต้องการที่จะหาอัลกอริทึมที่พบทุกเส้นทางที่สั้นที่สุดเพื่อโหนดทั้งหมดจากแหล่งโหนดsO(|V|)O(|V|)O(|V|)sss ฉันไม่แน่ใจว่าฉันจะไปเกี่ยวกับปัญหานี้ได้อย่างไร ฉันพยายามที่จะดูว่าฉันสามารถใช้ความจริงที่ว่ามันไม่มีน้ำหนักรอบเชิงลบและแน่นอนที่เส้นทางที่ง่ายที่สุดระหว่างโหนดใด ๆไปวีuuuvvv

1
การโปรแกรมเชิงเส้นยอมรับอัลกอริธึมเวลาพหุนามอย่างมากหรือไม่?
ปัญหาการโปรแกรมเชิงเส้น: ค้นหาอัลกอริธึมเวลาพหุนามอย่างยิ่งสำหรับเมทริกซ์ A ∈ Rm × n และ b ∈ Rm กำหนดว่ามี x ∈ Rn กับ Ax ≥ b หรือไม่ ฉันรู้ว่า Steve Smale's แสดงปัญหาที่ยังไม่ได้แก้ในวิชาคณิตศาสตร์ แต่ปัญหาการเขียนโปรแกรมเชิงเส้นดังกล่าวเป็นจนถึงตอนนี้ไม่สามารถแก้ไขได้?

1
สร้างเครือข่ายที่ปลอดขนาดที่มีการแจกแจงระดับกฎหมายพลังงานโดยใช้ Barabasi-Albert
ฉันกำลังพยายามทำซ้ำเครือข่ายสังเคราะห์ (กราฟ) ที่อธิบายไว้ในเอกสารบางฉบับ มันบอกว่าใช้แบบจำลองBarabasi - อัลเบิร์ตในการสร้าง "เครือข่ายฟรี - มาตราส่วนด้วยอำนาจ - กฎหมายการกระจายระดับ "PA(k)∝k−λPA(k)∝k−λP_A(k) ∝ k^{-λ} คือการกระจายความน่าจะเป็นที่ส่งกลับน่าจะเป็นของโหนดที่มีการศึกษาระดับปริญญาk ตัวอย่างเช่น P A ( 2 )บ่งชี้ความน่าจะเป็นของการสุ่มเลือกโหนดจากเครือข่ายและรับโหนดที่มีระดับ 2PAPAP_AkkkPA(2)PA(2)P_A(2) ค่าเฉลี่ยของการศึกษาระดับปริญญาจังหวะน่าจะเป็นที่ 4 ในกระดาษหนึ่งกับต่ำสุดที่kของ 2 ไม่มีคำเกี่ยวกับสูงสุดk ในกระดาษอื่นมันไม่ได้ระบุ ดูเหมือนจะไม่สำคัญที่จะกำหนดเครือข่ายkkkkkkkkk ค่าแลมบ์ดาλจะได้รับเป็นจำนวนโหนดnชุดค่าผสมคือnnn n = 50000, λ = 3, 2.7, 2.3, ด้วยกระดาษ n = 4000 และλ = 2.5 หรือ n = 6000 และλ …

2
ทำไมเราไม่พบเส้นทางที่สั้นที่สุดที่มีน้ำหนักเชิงลบโดยเพียงแค่เพิ่มค่าคงที่เพื่อให้น้ำหนักทั้งหมดเป็นค่าบวก
ฉันกำลังอ่านคำแนะนำเกี่ยวกับอัลกอริทึมและมาจากอัลกอริทึมของจอห์นสันที่ขึ้นอยู่กับการทำให้แน่ใจว่าเส้นทางทั้งหมดเป็นไปในทางบวก อัลโกนั้นขึ้นอยู่กับการหาฟังก์ชั่นน้ำหนักใหม่ (w ') ที่เป็นบวกสำหรับทุกขอบและรักษาความถูกต้องของความสัมพันธ์เส้นทางที่สั้นที่สุด มันทำได้โดยการคำนวณ h (s), h (d) ค่าที่จะเพิ่มเข้าไปในค่าดั้งเดิม w คำถามของฉันคือทำไมไม่เพียงแค่หาค่า w ที่เล็กที่สุดในกราฟและเพิ่มลงในขอบทั้งหมด? สิ่งนี้จะเป็นไปตามเงื่อนไขทั้งสองและจะต้องใช้การคำนวณน้อยลง

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

3
การพูดว่า“ มีประสิทธิภาพมากกว่าแบบเชิงเส้นกำกับ” หมายความว่าอย่างไร
มันหมายความว่าอย่างไรเมื่อเราบอกว่าอัลกอริทึมเป็น asymptotically ประสิทธิภาพมากขึ้นกว่า ?XXXYYY XXXจะเป็นตัวเลือกที่ดีกว่าสำหรับอินพุตทั้งหมด XXXจะเป็นตัวเลือกที่ดีกว่าสำหรับอินพุตทั้งหมดยกเว้นอินพุตขนาดเล็ก XXXจะเป็นตัวเลือกที่ดีกว่าสำหรับอินพุตทั้งหมดยกเว้นอินพุตขนาดใหญ่ YYYจะเป็นตัวเลือกที่ดีกว่าสำหรับอินพุตขนาดเล็ก ลิงค์สำหรับคำถามนี้อยู่ที่นี่ http://quiz.geeksforgeeks.org/algorithms-analysis-of-algorithms-question-16/ ฉันคิดว่าอัลกอริธึมที่มีประสิทธิภาพมากกว่าแบบ asymptotically ควรทำงานกับอินพุตทั้งหมด แต่ฉันไม่ได้รับเหตุผลที่อยู่เบื้องหลัง "ใช้งานได้กับอินพุตทั้งหมดยกเว้นอินพุตขนาดเล็ก"

3
อัลกอริทึมที่มีประสิทธิภาพในการคำนวณหมายเลขฟีโบนักชีที่
จำนวนที่ Fibonacci สามารถคำนวณในเวลาเชิงเส้นโดยใช้การเกิดซ้ำดังต่อไปนี้:nnn def fib(n): i, j = 1, 1 for k in {1...n-1}: i, j = j, i+j return i หมายเลขที่ Fibonacci สามารถคำนวณได้ด้วย[ φ n / √nnn. แต่นี้มีปัญหากับการปัดเศษปัญหาแม้มีขนาดค่อนข้างเล็กn อาจมีวิธีการรอบนี้แต่ฉันไม่อยากทำอย่างนั้น[ φn/ 5-√][φn/5]\left[\varphi^n / \sqrt{5}\right]nnn มีอัลกอริทึม(ลอการิทึมในค่าหรือดีกว่า) ที่มีประสิทธิภาพเพื่อคำนวณจำนวนฟีโบนักชีที่nที่ไม่พึ่งพาเลขคณิตจุดลอยตัวหรือไม่? สมมติว่าการดำเนินการจำนวนเต็ม ( + , - , × , / ) สามารถดำเนินการได้ในเวลาคงที่nnnnnn+++-−-××\times///

2
คุณจะหา parens ที่ไม่สมดุลทั้งหมดในสตริงในเวลาเชิงเส้นด้วยหน่วยความจำคงที่ได้อย่างไร?
ฉันได้รับปัญหาต่อไปนี้ระหว่างการสัมภาษณ์: ให้สตริงที่มีส่วนผสมของ parens (ไม่ใช่วงเล็บเหลี่ยมหรือวงเล็บปีกกา - เพียง parens) กับอักขระตัวอักษรผสมตัวเลขอื่น ๆ ระบุ parens ทั้งหมดที่ไม่มี paren ที่ตรงกัน ตัวอย่างเช่นในสตริง ") (ab))" ดัชนี 0 และ 5 มี parens ที่ไม่มี paren ที่ตรงกัน ฉันหยิบยกวิธีการแก้ปัญหา O (n) ที่ทำงานโดยใช้หน่วยความจำ O (n) โดยใช้สแต็คและผ่านสตริงเมื่อเพิ่ม parens ให้กับสแต็กและลบออกจากสแต็กเมื่อใดก็ตามที่ฉันพบ paren ปิดและด้านบนของสแตก การเปิด paren หลังจากนั้นผู้สัมภาษณ์ตั้งข้อสังเกตว่าปัญหาสามารถแก้ไขได้ในเวลาเชิงเส้นด้วยหน่วยความจำคงที่ (ในไม่มีการใช้หน่วยความจำเพิ่มเติมนอกเหนือจากสิ่งที่เกิดขึ้นจากการป้อนข้อมูล) ฉันถามว่าเธอพูดอะไรบางอย่างเกี่ยวกับการเดินผ่านสตริงหนึ่งครั้งจากด้านซ้ายระบุ parens ที่เปิดอยู่ทั้งหมดและจากนั้นอีกครั้งที่สองจากด้านขวาที่ระบุ parens ทั้งหมดที่อยู่ใกล้ ... หรืออาจเป็นวิธีอื่น ฉันไม่เข้าใจและไม่อยากให้เธอจับฉันไว้ ทุกคนสามารถอธิบายโซลูชันที่เธอแนะนำได้หรือไม่
11 algorithms 

3
เวลาที่ซับซ้อนของการเพิ่ม
Wikipedia แสดงความซับซ้อนของเวลาในการเพิ่มเป็นโดยที่nคือจำนวนบิตnnnnnn นี่เป็นขอบเขตล่างที่แข็งทฤษฏีหรือไม่? หรือนี่เป็นเพียงความซับซ้อนของอัลกอริทึมที่เร็วที่สุดที่รู้จักกันในปัจจุบัน ฉันต้องการทราบว่าเนื่องจากความซับซ้อนของการเพิ่มให้ขีดการดำเนินการทางคณิตศาสตร์อื่น ๆ ทั้งหมดและอัลกอริทึมทั้งหมดที่ใช้พวกเขา มันเป็นไปไม่ได้ในทางทฤษฎีหรือไม่ที่จะได้อัลกอริธึมเพิ่มเติมที่ทำงานใน ? หรือเราผูกพันกับความซับซ้อนเชิงเส้นเพื่อเพิ่มเติมo ( n )o(n)o(n)

2
คู่ที่ใกล้ที่สุดของคะแนนระหว่างสองชุดในแบบ 2 มิติ
ฉันมีสองชุดจุดในระนาบ 2 มิติ ฉันต้องการค้นหาจุดที่ใกล้ที่สุดs , tเช่นs ∈ S , t ∈ Tและระยะทางแบบยุคลิดระหว่างs , tมีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้ สิ่งนี้สามารถทำได้อย่างมีประสิทธิภาพ? สามารถทำได้ในเวลาO ( n log n )โดยที่n = | S | + | T | ?S,TS,TS,Ts,ts,ts,ts∈Ss∈Ss \in St∈Tt∈Tt \in Ts,ts,ts,tO(nlogn)O(nlog⁡n)O(n \log n)n=|S|+|T|n=|S|+|T|n = |S|+|T| ฉันรู้ว่าถ้าฉันให้เป็นหนึ่งเดียวชุดแล้วมันเป็นไปได้ที่จะหาคู่ที่อยู่ใกล้จุดs , s ' ∈ SในO ( n log n )เวลาโดยใช้ขั้นตอนวิธีการหารและพิชิตมาตรฐาน อย่างไรก็ตามอัลกอริทึมนั้นดูเหมือนจะไม่พูดคุยกับกรณีของสองชุดเนื่องจากไม่มีการเชื่อมต่อระหว่างระยะห่างระหว่างจุดที่ใกล้เคียงที่สุดสองจุดภายในหรือเทียบกับระยะห่างระหว่างจุดที่ใกล้เคียงที่สุดทั้งสองชุดSSSs,s′∈Ss,s′∈Ss,s' …

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

1
จัดทำดัชนีในฐานข้อมูลรูปแบบ - โซลูชันคิวบ์ของ Optimal Rubik ของ Korf
ในฐานะที่เป็นโครงการที่สนุกฉันได้ทำงานเกี่ยวกับการใช้ C # ของ Richard Korf - การค้นหาโซลูชันที่เหมาะสมที่สุดกับ Cube ของ Rubik โดยใช้ฐานข้อมูลรูปแบบ https://www.cs.princeton.edu/courses/archive/fall06/cos402/papers/korfrubik.pdf ฉันใช้งานได้จริงฉันแค่พยายามปรับปรุงวิธีแก้ปัญหาของฉัน สิ่งหนึ่งที่ Korf จ้องมองในกระดาษของเขาคือวิธีที่เขาเก็บและจัดทำดัชนีลงในฐานข้อมูลรูปแบบ ฉันคิดว่าเราต้องการใช้ตัวอย่างของลูกบาศก์รูบิคเพื่อสร้างดัชนีเป็นอาร์เรย์ คำถามของฉันเกี่ยวกับวิธีที่ดีที่สุดในการสร้างดัชนีนี้ ทางออกของฉันคือการสร้างแฮชที่สมบูรณ์แบบน้อยที่สุด สิ่งนี้เกี่ยวข้องกับการรักษาคิวบ์ทั้งหมดไว้ในหน่วยความจำจนกว่าฉันจะค้นพบฐานข้อมูลรูปแบบทั้งหมดจากนั้นสร้างแฮชที่สมบูรณ์แบบเพียงเล็กน้อยจากนั้น MPH ใช้เวลาสองสามชั่วโมงในการรันขึ้นอยู่กับขนาดฐานข้อมูลรูปแบบ แต่ฉันต้องทำเพียงครั้งเดียวนับตั้งแต่ฉันบันทึกลงดิสก์ ในท้ายที่สุดฉันสามารถโยนก้อนเองเก็บเฉพาะ MPH ด้วยวิธีนี้ฉันสามารถใช้ลูกบาศก์ของรูบิคแบบสุ่มใช้รูปแบบจากนั้นค้นหาดัชนีอาร์เรย์ใน MPH เพื่อรับความยาวของโซลูชันโดยประมาณ ฉันเชื่อว่า Korf และ Shultz อธิบายวิธีที่ดีกว่าในการกำหนดดัชนีของคิวบ์ในกระดาษ 2548 ของพวกเขาที่เรียกว่า "การค้นหาแบบกว้างขนาดใหญ่ - การค้นหาครั้งแรก" https://www.aaai.org/Papers/AAAI/2005/AAAI05-219.pdf บทความนี้อธิบายถึงอัลกอริทึมในการสร้างดัชนีโดยอ้างอิงจากการเรียงลำดับพจนานุกรมของการเปลี่ยนแปลง โดยทั่วไปคุณสามารถหาการเปลี่ยนแปลง {1, 2, 3} และคิดว่ามันเล็กที่สุดโดยมีดัชนีเป็น 0 {1, 3, 2} …

3
มีหลักฐานว่าคอมพิวเตอร์ควอนตัมมีประสิทธิภาพมากกว่าคอมพิวเตอร์แบบดั้งเดิมหรือไม่?
อัลกอริทึมของแคระแกร็นมักใช้เป็นอาร์กิวเมนต์ มันสามารถแก้ปัญหาการแยกตัวได้เร็วกว่าอัลกอริธึมที่รู้จักสำหรับคอมพิวเตอร์แบบดั้งเดิม ถึงกระนั้นเราก็ไม่มีเครื่องคอมพิวเตอร์คลาสสิกที่พิสูจน์ได้ว่ายังไม่สามารถแยกจำนวนเต็มได้อย่างมีประสิทธิภาพ มีคอมพิวเตอร์ควอนตัมที่แท้จริงใด ๆ ที่พิสูจน์ได้สามารถแก้ปัญหาได้เร็วกว่าคอมพิวเตอร์ทั่วไปหรือไม่?

1
การค้นหาความครอบคลุมขั้นต่ำของเซตย่อยของผลิตภัณฑ์คาร์ทีเซียนที่ จำกัด โดยผลิตภัณฑ์คาร์ทีเซียน
ด้วยเซตย่อยของผลิตภัณฑ์คาร์ทีเซียนของเซต จำกัด สองชุดฉันต้องการค้นหาปกน้อยที่สุดโดยชุดซึ่งเป็นผลิตภัณฑ์คาร์ทีเซียนเองผม× JI×JI \times J ตัวอย่างเช่นเมื่อได้รับผลิตภัณฑ์ระหว่างและ , ฉันอาจสังเกตเห็นชุดย่อยและพยายามคลุมด้วยผลิตภัณฑ์คาร์ทีเซียนจำนวนน้อยที่สุดJ = { 1 , 2 , 3 } { ( A , 2 ) , ( B , 3 ) , ( B , 2 ) }ผม= { A , B , C}I={A,B,C}I=\{A,B,C\}J= { 1 , 2 , 3 }J={1,2,3}J=\{1,2,3\}{ ( …

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

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