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

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

4
วิธีการหาซูเปอร์สตาในเวลาเชิงเส้น?
พิจารณากราฟกำกับ เราเรียกโหนดซุปเปอร์สตาร์และถ้าหากไม่มีโหนดอื่น ๆ ที่สามารถเข้าถึงได้จากมัน แต่โหนดอื่น ๆ ทั้งหมดที่มีขอบสระโวลต์ อย่างเป็นทางการ:โวลต์vv โวลต์vv \qquad \displaystyle v ซุปเปอร์สตาร์ : ⟺ o u t d e g ( v ) = 0 ∧ i n d e g ( v ) = n - 1 superstar :⟺outdeg(v)=0∧indeg(v)=n−1 \text{ superstar } :\Longleftrightarrow \mathrm{outdeg}(v) = 0 \land \mathrm{indeg}(v) …

6
การสร้างชุดค่าผสมจากชุดคู่โดยไม่มีการทำซ้ำองค์ประกอบ
ฉันมีชุดของคู่ แต่ละคู่เป็นรูปแบบ (x, y) เช่นว่า x, y [0,n)เป็นจำนวนเต็มจากช่วง ดังนั้นถ้า n คือ 4 ดังนั้นฉันมีคู่ต่อไปนี้: (0,1) (0,2) (0,3) (1,2) (1,3) (2,3) ฉันมีคู่แล้ว ตอนนี้ฉันต้องสร้างชุดค่าผสมโดยใช้n/2คู่ที่ไม่มีจำนวนเต็มซ้ำ (กล่าวอีกอย่างหนึ่งว่าจำนวนเต็มแต่ละค่าปรากฏอย่างน้อยหนึ่งครั้งในชุดค่าผสมสุดท้าย) ต่อไปนี้เป็นตัวอย่างของชุดค่าผสมที่ถูกต้องและไม่ถูกต้องเพื่อความเข้าใจที่ดีขึ้น 1. (0,1)(1,2) [Invalid as 3 does not occur anywhere] 2. (0,2)(1,3) [Correct] 3. (1,3)(0,2) [Same as 2] มีคนแนะนำฉันถึงวิธีในการสร้างชุดค่าผสมที่เป็นไปได้ทั้งหมดเมื่อฉันมีคู่

7
อัลกอริทึมในการค้นหาเส้นผ่านศูนย์กลางของต้นไม้โดยใช้ BFS / DFS ทำไมมันทำงาน
นี้การเชื่อมโยงให้อัลกอริทึมสำหรับการหาขนาดเส้นผ่าศูนย์กลางของต้นไม้ไม่มีทิศทางใช้ BFS สรุป: รัน BFS บนโหนดใด ๆ ในกราฟโดยระลึกถึงโหนดที่ค้นพบล่าสุด รัน BFS จากการที่คุณจดจำโหนด v ที่พบล่าสุด d (u, v) คือเส้นผ่านศูนย์กลางของต้นไม้ ทำไมมันทำงาน หน้า 2 ของสิ่งนี้ให้เหตุผล แต่มันทำให้เกิดความสับสน ฉันกำลังอ้างอิงส่วนเริ่มต้นของการพิสูจน์: รัน BFS บนโหนดใด ๆ ในกราฟโดยระลึกถึงโหนดที่ค้นพบล่าสุด รัน BFS จากการที่คุณจดจำโหนด v ที่พบล่าสุด d (u, v) คือเส้นผ่านศูนย์กลางของต้นไม้ ความถูกต้อง: ให้ a และ b เป็นสองโหนดใด ๆ ที่ d (a, b) คือเส้นผ่านศูนย์กลางของต้นไม้ มีเส้นทางที่ไม่ซ้ำกันจาก …

2
ขายบล็อกของช่วงเวลา
รับช่วงเวลาที่คนต้องการซื้อคนที่มีค่าแต่ละครั้งสล็อตเจแต่ละคนสามารถซื้อช่วงเวลาหนึ่งช่วงติดต่อกันเท่านั้นซึ่งอาจว่างเปล่าnnnkkkiiih(i,j)≥0h(i,j)≥0h(i,j)\geq 0jjj มีวิธีคิดแบบพหุนามเวลาในการคำนวณมูลค่าสูงสุดที่ผู้ขายสามารถทำได้หรือไม่? เราสามารถให้แต่ละช่วงเวลาแก่บุคคลที่เห็นคุณค่าได้มากที่สุด นอกจากนี้หากเราแก้ไขลำดับของช่วงเวลาของผู้คนดังนั้นการเขียนโปรแกรมแบบไดนามิกสามารถใช้เพื่อแก้ปัญหาสำหรับค่าสูงสุดของคนแรกที่ซื้อเวลาครั้งแรก สล็อตkkk0≤i≤k0≤i≤k0\le i \le k0≤j≤n0≤j≤n0\le j \le n

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

2
แสดงวิธีการทำ FFT ด้วยมือ
สมมติว่าคุณมีสองพหุนาม:และ23+x3+x3 + x2x2+22x2+22x^2 + 2 ฉันพยายามที่จะเข้าใจว่า FFT ช่วยให้เราคูณชื่อพหุนามทั้งสองนี้อย่างไร อย่างไรก็ตามฉันไม่พบตัวอย่างผลงานใด ๆ บางคนสามารถแสดงให้ฉันเห็นได้ว่าอัลกอริทึม FFT จะทวีคูณชื่อพหุนามทั้งสองนี้อย่างไร (หมายเหตุ: ไม่มีอะไรพิเศษเกี่ยวกับพหุนามเหล่านี้ แต่ฉันต้องการให้มันง่ายเพื่อให้ง่ายต่อการติดตาม) ฉันได้ดูอัลกอริธึมใน pseudocode แต่ดูเหมือนว่าพวกเขาทั้งหมดจะมีปัญหา (อย่าระบุว่าอินพุตควรเป็นอะไร, ตัวแปรที่ไม่ได้กำหนด) และน่าประหลาดใจที่ฉันไม่สามารถหาได้ว่ามีใครบ้างที่เดินผ่าน (ด้วยมือ) ตัวอย่างการคูณพหุนามด้วย FFT

4
ความซับซ้อนของเวลาในการหาเส้นผ่านศูนย์กลางของกราฟ
ความซับซ้อนของเวลาในการหาเส้นผ่านศูนย์กลางของกราฟ คืออะไรG=(V,E)G=(V,E)G=(V,E) O(|V|2)O(|V|2){O}(|V|^2) O(|V|2+|V|⋅|E|)O(|V|2+|V|⋅|E|){O}(|V|^2+|V| \cdot |E|) O(|V|2⋅|E|)O(|V|2⋅|E|){O}(|V|^2\cdot |E|) O(|V|⋅|E|2)O(|V|⋅|E|2){O}(|V|\cdot |E|^2) เส้นผ่านศูนย์กลางของกราฟGGGคือระยะทางที่สั้นที่สุดระหว่างชุดของจุดยอดทั้งหมดในกราฟ ฉันไม่รู้ว่าจะทำอย่างไรเกี่ยวกับเรื่องนี้ฉันต้องการการวิเคราะห์ที่สมบูรณ์เกี่ยวกับวิธีการแก้ปัญหาเช่นนี้

5
ใช้การสอบถามซ้ำเมื่อใด
อินสแตนซ์บางตัว (ค่อนข้าง) ขั้นพื้นฐาน (คิดว่านักเรียนระดับ CS ปีแรกของวิทยาลัย) เมื่อไรที่เราจะใช้การเรียกซ้ำแทนการวนซ้ำ?

6
GCD มีประสิทธิภาพมากที่สุดคืออะไร
ฉันรู้ว่าอัลกอริทึมของ Euclid เป็นอัลกอริทึมที่ดีที่สุดในการรับ GCD (ตัวหารร่วมมาก) ของรายการจำนวนเต็มบวก แต่ในทางปฏิบัติคุณสามารถเขียนโค้ดอัลกอริทึมนี้ได้หลายวิธี (ในกรณีของฉันฉันตัดสินใจใช้ Java แต่ C / C ++ อาจเป็นตัวเลือกอื่น) ฉันต้องใช้รหัสที่มีประสิทธิภาพที่สุดเท่าที่จะเป็นไปได้ในโปรแกรมของฉัน ในโหมดเรียกซ้ำคุณสามารถเขียน: static long gcd (long a, long b){ a = Math.abs(a); b = Math.abs(b); return (b==0) ? a : gcd(b, a%b); } และในโหมดวนซ้ำดูเหมือนว่า: static long gcd (long a, long b) { long r, i; …

1
การทำซ้ำ (การกระจาย) ที่ยาวที่สุดที่ตามมาในสตริง
คำชี้แจงปัญหาที่ไม่เป็นทางการ: รับสตริงเช่นเราต้องการให้สีตัวอักษรสีแดงและบางตัวอักษรสีน้ำเงิน (และบางส่วนไม่ได้เลย) เช่นการอ่านตัวอักษรสีแดงจากซ้ายไปขวาให้ผลเช่นเดียวกับการอ่าน ตัวอักษรสีน้ำเงินเท่านั้นACCABBABACCABBABACCABBAB ในตัวอย่างเราสามารถระบายสีพวกมันได้ดังนี้: ACCABBABACCABBABA\color{blue}{C}\color{red}{CAB}B\color{blue}{AB} ดังนั้นเราจึงบอกว่าเป็น subsequence ซ้ำC C B B B นอกจากนี้ยังมีการวนซ้ำซ้ำที่ยาวที่สุด (ซึ่งง่ายต่อการตรวจสอบ)CBCABCABCCA B B A BACCABBABACCABBAB เราสามารถคำนวณส่วนประกอบซ้ำที่ยาวที่สุดได้อย่างมีประสิทธิภาพหรือไม่ คำถามทางการ: มันยากที่จะตัดสินใจว่าจะให้สตริงกับหรือไม่ว่ามีการเรียงตัวของความยาวkซ้ำอยู่ในสตริงหรือไม่?kkkkkk ถ้าเป็นเช่นนั้น: ปัญหาใดที่สามารถลดปัญหานี้ได้ ถ้าไม่: อัลกอริทึมที่มีประสิทธิภาพคืออะไร? (เห็นได้ชัดว่าอัลกอริธึมนี้สามารถใช้ในการคำนวณการวนซ้ำที่ยาวที่สุด) คำถามโบนัส: จะมีการเรียงลำดับความยาวหากขนาดของตัวอักษรถูกล้อมด้วยค่าคงที่หรือไม่?n / 2 - o ( n )n/2−o(n)n/2 - o(n) (สิ่งนี้เป็นที่รู้จักกันว่าเป็นจริงสำหรับตัวอักษรไบนารี) แก้ไข 2: คำตอบเชิงลบเพื่อโบนัสคำถามที่เป็นที่รู้จักกันไปแล้วสำหรับตัวอักษรที่มีขนาดอย่างน้อย5ในความเป็นจริงสำหรับตัวอักษรขนาดมีสตริงกับ subsequences ซ้ำที่ยาวที่สุดของความยาวของเพียง1/2}) สตริงสุ่มเพียงพอที่จะแสดงสิ่งนี้ ผลลัพธ์มีอยู่แล้ว แต่ฉันมองข้ามไป555ΣΣΣO(n⋅Σ−1/2)O(n·Σ−1/2)O(n · Σ^{-1/2}) …

3
การค้นหาการตัดต่ำสุดของกราฟที่ไม่ได้บอกทิศทาง
นี่คือคำถามจากการสอบที่ผ่านมาฉันพยายามที่จะแก้ปัญหา: สำหรับ undirected กราฟ มีน้ำหนักในเชิงบวกW ( E ) ≥ 0 , ฉันพยายามที่จะหาจุดตัดขั้นต่ำ ฉันไม่รู้วิธีการอื่นนอกเหนือจากการใช้ทฤษฎีบทการลดการไหลสูงสุด แต่กราฟนั้นไม่ได้บอกทิศทางดังนั้นฉันควรจะนำมันไปยังไง? ฉันคิดถึงการกำหนดขอบที่ปลายทั้งสองด้าน แต่แล้วจุดยอดไหนที่จะเป็นต้นกำเนิดและจุดยอดไหนที่จะเป็นจุดศูนย์กลาง? หรือมีวิธีอื่นในการหาค่าต่ำสุดหรือไม่GGGw ( e ) ≥ 0w(e)≥0w(e) \geq 0

1
เหตุใดอัลกอริทึมการหมุนแผนภูมิต้นไม้จึงคำนึงถึงทั้งโหนดหลักและโหนดปู่ย่าตายาย
ฉันไม่เข้าใจว่าทำไมการหมุนในโครงสร้างข้อมูลแผนภูมิต้นไม้ไม่ได้คำนึงถึงเฉพาะพาเรนต์ของโหนดการจัดอันดับ แต่ยังรวมถึงปู่ย่าตายาย (การดำเนินการ zig-zag และ zig-zig) ทำไมสิ่งต่อไปนี้ถึงไม่ทำงาน: ในขณะที่เราแทรกเช่นโหนดใหม่ไปยังทรีเราตรวจสอบว่าเราแทรกลงในทรีย่อยทางซ้ายหรือขวา หากเราแทรกเข้าไปทางซ้ายเราจะหมุน RIGHT ผลลัพธ์และในทางกลับกันสำหรับแผนผังย่อยที่เหมาะสม มันจะเป็นแบบนี้ซ้ำ ๆ ซ้ำ ๆ Tree insert(Tree root, Key k){ if(k < root.key){ root.setLeft(insert(root.getLeft(), key); return rotateRight(root); } //vice versa for right subtree } ที่ควรหลีกเลี่ยงกระบวนการ "กาง" ทั้งหมดคุณคิดหรือไม่?

7
อัลกอริทึมในการกระจายรายการ“ อย่างสม่ำเสมอ”
ฉันกำลังค้นหาอัลกอริทึมเพื่อแจกจ่ายค่าจากรายการเพื่อให้รายการผลลัพธ์เป็น "สมดุล" หรือ "กระจายอย่างสม่ำเสมอ" ที่สุด (ในเครื่องหมายคำพูดเพราะฉันไม่แน่ใจว่าสิ่งเหล่านี้เป็นวิธีที่ดีที่สุดในการอธิบาย ... ต่อมาฉันจะให้วิธีการวัดว่าผลลัพธ์ดีกว่าอื่น) ดังนั้นสำหรับรายการ: [1, 1, 2, 2, 3, 3] หนึ่งในผลลัพธ์ที่ดีที่สุดหลังจากการกระจายค่าอีกครั้งคือ: [1, 2, 3, 1, 2, 3] อาจมีผลลัพธ์อื่น ๆ ที่ดีเท่านี้และแน่นอนว่าสิ่งนี้จะซับซ้อนมากขึ้นด้วยชุดค่าที่น้อยกว่า นี่คือวิธีการวัดว่าผลลัพธ์ดีกว่าวิธีอื่นหรือไม่: นับระยะทางระหว่างแต่ละรายการและรายการถัดไปด้วยค่าเดียวกัน คำนวณค่าเบี่ยงเบนมาตรฐานสำหรับชุดของระยะทาง การกระจายตัวที่ต่ำกว่าหมายถึงผลลัพธ์ที่ดีกว่า ข้อสังเกต: เมื่อคำนวณระยะทางและถึงจุดสิ้นสุดของรายการโดยไม่ต้องค้นหารายการที่มีค่าเท่ากันเราจะกลับไปที่จุดเริ่มต้นของรายการ ดังนั้นในที่สุดรายการเดียวกันจะถูกพบและระยะทางสำหรับรายการนั้นจะเป็นความยาวของรายการ ซึ่งหมายความว่ารายการเป็นวงกลม ; รายการทั่วไปมี ~ 50 รายการที่มีค่าแตกต่างกัน ~ 15 ในปริมาณที่แตกต่างกัน ดังนั้น: สำหรับผลที่[1, 2, 3, 1, 2, 3]ระยะห่างอยู่[3, 3, 3, …

9
สร้างตัวเลขสุ่มกระจายอย่างสม่ำเสมอโดยใช้เหรียญ
คุณมีหนึ่งเหรียญ คุณสามารถพลิกมันได้หลายครั้งตามที่คุณต้องการ คุณต้องการที่จะสร้างตัวเลขสุ่มดังกล่าวว่า≤ R &lt; Bที่R , , ข∈ Z +Rrra ≤ r &lt; ba≤r&lt;ba \leq r < br,a,b∈Z+r,a,b∈Z+r,a,b\in \mathbb{Z}^+ การแจกแจงของตัวเลขควรเหมือนกัน มันง่ายถ้า :b−a=2nb−a=2nb -a = 2^n r = a + binary2dec(flip n times write 0 for heads and 1 for tails) เกิดอะไรขึ้นถ้า ?b−a≠2nb−a≠2nb-a \neq 2^n

3
อัลกอริทึมใดที่ไม่สามารถทำการขนานกันได้
มีอัลกอริทึมใดที่ยากต่อการขนานหรือการวิจัยยังคงทำงานอยู่หรือไม่? ฉันต้องการทราบเกี่ยวกับอัลกอริทึมหรือสาขาการวิจัยใด ๆ ในการคำนวณแบบขนาน ฉันค้นหาทุกสิ่งมีการใช้งาน 'แบบขนาน' เสร็จสิ้น เพียงแค่ต้องการศึกษาเกี่ยวกับเขตข้อมูลการคำนวณแบบขนานที่ยังไม่ได้สำรวจ

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