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

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

2
อัลกอริทึมการเปลี่ยนหน้านาฬิกา - หน้าปัจจุบันอยู่แล้ว
เมื่อทำการจำลองอัลกอริธึมการเปลี่ยนหน้านาฬิกาเมื่อการอ้างอิงมาซึ่งมีอยู่ในหน่วยความจำแล้วเข็มนาฬิกายังเพิ่มขึ้นหรือไม่? นี่คือตัวอย่าง: ด้วย 4 ช่องโดยใช้อัลกอริทึมการเปลี่ยนหน้านาฬิกา รายการอ้างอิง: 1 2 3 4 1 2 5 1 3 2 4 5 รายการเริ่มต้นจะมีลักษณะเช่นนี้: -> [1][1] [2][1] [3][1] [4][1] การอ้างอิงครั้งต่อไปของการแทรกจะเป็น 1 จากนั้น 2 มือจะยังคงชี้ไปที่ 1 หลังจาก 1 และหลังจาก 2 หรือไม่ กล่าวอีกนัยหนึ่งหลังจากใส่ 5 นาฬิกาจะมีลักษณะดังนี้: -> [5][1] [2][0] [3][0] [4][0] ?

1
ค้นหาเส้นทาง k-shortest ระหว่างสองโหนด
รับ digraph ถ่วงน้ำหนัก G = V, EG=V,EG=V,Eและฟังก์ชั่นน้ำหนัก d( u , v )d(ยู,โวลต์)d(u,v)โดยปกติเราสามารถใช้อัลกอริทึมของ Dijkstra เพื่อรับเส้นทางที่สั้นที่สุด สิ่งที่ฉันสนใจคือทำอย่างไรจึงจะได้2ไม่มีวัน2nd2^{nd}เส้นทางที่สั้นที่สุด 3R d3Rd3^{rd}- สั้นที่สุดและอื่น ๆ คำถาม: มีอัลกอริทึมที่มีประสิทธิภาพในการรับเส้นทางที่สั้นที่สุดระหว่างสองโหนดในกราฟถ่วงน้ำหนักหรือไม่ มีอัลกอริธึมที่มีประสิทธิภาพในการรับเส้นทางที่สั้นที่สุดระหว่างสองโหนดในกราฟถ่วงน้ำหนักหรือไม่? คำตอบของทั้งคู่ก็โอเค แต่ฉันสงสัยว่าคำตอบของคำถามที่สองนั้นสามารถทำได้อย่างมีประสิทธิภาพมากกว่า kkk โทรหาคำตอบสำหรับคำถามแรก

2
การออกแบบการคัดเกรดแบบ Peer - การเลือกกราฟเพื่อให้ได้อันดับ / การจัดอันดับที่แม่นยำ
พื้นหลัง. ฉันกำลังเขียนโค้ดบางส่วนสำหรับการให้คะแนนแบบกึ่งอัตโนมัติโดยใช้การให้คะแนนแบบเพียร์เป็นส่วนหนึ่งของกระบวนการให้คะแนน นักเรียนจะได้รับเรียงความคู่หนึ่งครั้งและนักเรียนมีแถบเลื่อนเพื่อเลือกว่าจะดีกว่าและดีกว่ามากแค่ไหน เช่นแถบเลื่อนอาจมีลักษณะดังนี้: A---X-B ขึ้นอยู่กับผลลัพธ์ของการให้คะแนนเพื่อนเรียงความจะถูกจัดอันดับและครูจะจัดเกรด X% และ X ล่างสุดและคะแนนสำหรับเรียงความทั้งหมดจะถูกคำนวณโดยอัตโนมัติตามสิ่งนี้ ฉันคิดวิธีการจัดอันดับ / การให้คะแนนนี้แล้ว ส่วนนั้นทำงานได้ดี คำถามของฉัน. ฉันจะเลือกเรียงความที่จะให้กับนักเรียนได้อย่างไร การจำลองแนะนำว่าเราต้องมีการเขียนเรียงความอย่างน้อย 3 ครั้งเพื่อให้ได้อันดับที่ถูกต้อง ดังนั้นการเขียนเรียงความแต่ละครั้งควรปรากฏในคู่อย่างน้อย 3 คู่ที่มีการจัดลำดับเพียร์ เราคิดว่านี่เป็นปัญหากราฟ คิดว่าบทความเป็นโหนด แต่ละขอบแสดงถึงคู่ของบทความที่นำเสนอในระหว่างกระบวนการคัดเกรดเพื่อน ผลลัพธ์ความแม่นยำข้างต้นชี้ให้เห็นว่าระดับของแต่ละโหนด (หรือของโหนดส่วนใหญ่) ควรมีอย่างน้อย 3 กราฟที่ฉันควรใช้ ฉันจะสร้างกราฟที่จะใช้ในระหว่างการให้คะแนนเพื่อนได้อย่างไร สิ่งหนึ่งที่ท้าทายคือถ้าคุณมีกลุ่มในกราฟสิ่งนี้จะเอียงการไล่ระดับสีแบบเพียร์ ตัวอย่างเช่นเราไม่ต้องการให้เรียงความที่มีคุณภาพสูงเป็นแบบคัดเกรดกับส่วนใหญ่เป็นเรียงความที่มีคุณภาพสูงเพราะนั่นจะบิดเบือนผลลัพธ์ของการคัดเกรดเพื่อน คุณจะแนะนำอะไร ฉันคิดว่าปัญหานี้สามารถสร้างแบบจำลองด้วยกราฟที่ไม่ได้บอกทิศทางโดยใช้สิ่งต่อไปนี้: เริ่มต้นด้วยการใช้โหนดที่มีระดับน้อยที่สุดและเชื่อมโยงกับโหนดถัดไป ดำเนินการต่อไปจนกระทั่งระดับเฉลี่ยของคุณอย่างน้อย 3 เพิ่มการเชื่อมต่อโหนดให้สูงสุด ลดจำนวน cliques ให้น้อยที่สุด นี่เป็นวิธีที่ดีหรือไม่? ถ้าไม่ใช่คุณจะแนะนำอะไรแทน

1
ถ้าฉันต้องการเพียงหนึ่งองค์ประกอบของเมทริกซ์ผกผันมีอัลกอริทึมที่รวดเร็วหรือไม่?
ฉันใช้ Mathematica เพื่อแก้ปัญหา ฉันมีคำถามเกี่ยวกับเมทริกซ์ผกผัน ถ้าฉันต้องการเพียงหนึ่งองค์ประกอบของเมทริกซ์ผกผันมีอัลกอริทึมที่เร็วกว่าการใช้Inverseเพื่อคำนวณเมทริกซ์ผกผันทั้งหมดและแยกองค์ประกอบที่ฉันต้องการหรือไม่?

3
สุ่มตัวอย่างในรูปหลายเหลี่ยม
ฉันต้องการตัวอย่างจุดสุ่มอย่างสม่ำเสมอในรูปหลายเหลี่ยม ... หากสุ่มตัวอย่างเป็นจำนวนมากพวกเขามีแนวโน้มที่จะตกอยู่ในสองภูมิภาคเท่ากันหากพวกเขามีพื้นที่เดียวกัน นี่จะค่อนข้างง่ายถ้ามันเป็นรูปสี่เหลี่ยมจัตุรัสเนื่องจากฉันจะใช้สองตัวเลขสุ่มใน [0,1] เป็นพิกัดของฉัน รูปร่างที่ฉันมีเป็นรูปหลายเหลี่ยมปกติ แต่ฉันต้องการให้ใช้กับรูปหลายเหลี่ยมใด ๆ /programming/3058150/how-to-find-a-random-point-in-a-quadrangle

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

4
อัลกอริทึมที่ดีสำหรับการสร้าง DFA แบบสุ่มคืออะไร
ฉันกำลังสร้าง DFA แบบสุ่มเพื่อทดสอบอัลกอริทึมการลด DFA กับพวกเขา อัลกอริทึมที่ฉันใช้ตอนนี้มีดังนี้: สำหรับแต่ละรัฐ Qqqสำหรับแต่ละสัญลักษณ์ในตัวอักษร คccเพิ่ม δ( q, c )δ(q,c)\delta (q, c)เพื่อบางรัฐสุ่ม แต่ละรัฐมีความน่าจะเป็นเหมือนกันในการเป็นรัฐสุดท้าย นี่เป็นวิธีที่ดีในการสร้าง DFA ที่เป็นกลางหรือไม่? นอกจากนี้อัลกอริทึมนี้ไม่ได้สร้างการตัดแต่ง DFA (DFA ที่ไม่มีสถานะล้าสมัย) ดังนั้นฉันสงสัยว่าถ้ามีวิธีที่ดีกว่าในการสร้างการสุ่ม DFAs ที่สามารถมั่นใจได้ว่าการตัดแต่งนั้นเป็นอย่างไร


1
การวัดความผิดปกติแบบใดที่จะใช้เมื่อวิเคราะห์ Quicksort
ฉันพยายามที่จะเข้าใจว่าเพราะเหตุใด quicksort โดยใช้พาร์ติชัน Lomuto และเดือยที่ตายตัวกำลังทำงานอย่างผิดปกติ ฉันคิดว่าถึงแม้ว่าอินพุตจะถูกสร้างแบบสุ่ม แต่ก็อาจมีลำดับต่อเนื่องกันมากมาย แต่ฉันไม่แน่ใจว่าจะวัดระดับความผิดปกติในลำดับอย่างไร ฉันคิดถึงการใช้จำนวนผู้รุกราน แต่ฉันเห็นจากคำถามอื่นฉันถามว่านั่นไม่ใช่วิธีที่ดีในกรณีนี้ เหตุผลที่ฉันสงสัยว่าลำดับแบบสุ่มของฉันมี "คำสั่งซื้อ" มากมายสำหรับพวกเขานั่นก็คือการใช้การสุ่ม pivot ช่วยแก้ปัญหาประสิทธิภาพการทำงาน แต่ในทางทฤษฎีแล้วก็ไม่ควรมีปัญหาเรื่องประสิทธิภาพใด ๆ กับลำดับการป้อนข้อมูลแบบ "สุ่ม" ที่ควรจะเป็น

2
ความซับซ้อนในการค้นหาสูงสุดแบบสองมิติ (MIT OCW 6.006)
ในวิดีโอการบรรยายสำหรับMIT OCW 6.006เวลา 43:30 ได้รับ m × nm×nm \times n มดลูก AAA กับ ม.mm คอลัมน์และ nnn แถวซึ่งเป็นอัลกอริธึมการค้นหาสูงสุดแบบสองมิติซึ่งค่าสูงสุดคือค่าใด ๆ ที่มากกว่าหรือเท่ากับเพื่อนบ้านที่อยู่ติดกันอธิบายว่า: หมายเหตุ: หากมีความสับสนในการอธิบายคอลัมน์ผ่าน nnnฉันขอโทษ แต่นี่เป็นวิธีที่วิดีโอการบรรยายอธิบายและฉันพยายามที่จะสอดคล้องกับวิดีโอ มันทำให้ฉันสับสนมาก เลือกคอลัมน์กลาง n / 2n/2n/2// มีความซับซ้อนΘ ( 1 )Θ(1)\Theta(1) ค้นหาค่าสูงสุดของคอลัมน์ n/2n/2n/2// มีความซับซ้อน Θ(m)Θ(m)\Theta(m) เพราะมี mmm แถวในคอลัมน์ ตรวจสอบขอบเขต แถวเพื่อนบ้านของค่าสูงสุดหากมีค่ามากกว่าจะพบจุดสูงสุดมิฉะนั้นจะเรียกเก็บเงินคืนT(n/2,m)T(n/2,m)T(n/2, m)// มีความซับซ้อนT(n/2,m)T(n/2,m)T(n/2,m) จากนั้นเพื่อประเมินการสอบถามซ้ำผู้สอนการบรรยายกล่าว T(1,m)=Θ(m)T(1,m)=Θ(m)T(1,m) = \Theta(m) เพราะมันพบค่าสูงสุด T(n,m)=Θ(1)+Θ(m)+T(n/2,m)(E1)(E1)T(n,m)=Θ(1)+Θ(m)+T(n/2,m) T(n,m) …

1
ลบจำนวนจุดยอดต่ำสุดเพื่อตัดการเชื่อมต่อกราฟ
พิจารณากราฟที่ไม่มีทิศทางพร้อมแหล่งที่มาและจุดยอดจม เราต้องการลบจำนวนจุดยอดต่ำสุดในกราฟนั้นเพื่อตัดการเชื่อมต่อเส้นทางใด ๆ ระหว่างต้นทางและอ่างล้างจาน เราสามารถทำได้โดยใช้อัลกอริธึม max-flow, min-cut หรือไม่?

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

1
การเลือกคุณลักษณะที่คล้ายต้นไม้ตัดสินใจที่มีความยาวคงที่เพื่อลดประสิทธิภาพการค้นหาโดยเฉลี่ย
ฉันมีแบบสอบถามที่ซับซ้อนใช้ในการค้นหาชุดข้อมูลเพื่อหา\} แต่ละแบบสอบถามใช้เวลาเฉลี่ยดังนั้นเวลาโดยรวมในการค้นหาเชิงเส้นคือ. ฉันสามารถแบ่งแบบสอบถามออกเป็นย่อยที่ง่ายกว่าและค้นหา และที่{} แต่ละแบบสอบถามย่อยรวดเร็วยิ่งขึ้นในการคำนวณดังนั้นโดยรวมก็จะเร็วขึ้นเพื่อหาแล้วใช้เพื่อหา{}QQQSSSHแน่นอน= { s ∈ S| ที่ Q ( s ) เป็น True }Hexact={s∈S∣where Q(s) is True}H_\text{exact} = \{s \in S \mid \text{where $Q(s)$ is True}\}เสื้อttt ⋅ | S|t⋅|S|t\cdot |S|Hประมาณ= { s ∈ S∣ ∀QJ( s ) คือ True }Happrox={s∈S∣∀qj(s)is True}H_\text{approx} = \{s\in S \mid \forall q_j(s) …

3
การค้นหาจำนวนองค์ประกอบที่เล็กลงสำหรับแต่ละองค์ประกอบในอาเรย์อย่างมีประสิทธิภาพ
ฉันติดอยู่กับปัญหานี้: รับอาร์เรย์ AAA ของแรก nnn ตัวเลขธรรมชาติที่มีการเรียงสับเปลี่ยนแบบสุ่มอาร์เรย์ BBB ถูกสร้างขึ้นเช่นนั้น B(k)B(k)B(k) คือจำนวนองค์ประกอบจาก A(1)A(1)A(1) ถึง A ( k - 1 )A(k−1)A(k-1) ซึ่งเล็กกว่า A(k)A(k)A(k). ฉัน) ได้รับ AAA คุณสามารถหา BBB ใน O(n)O(n)O(n)เวลา? ii) ให้ไว้BBB คุณสามารถหา AAA ใน O(n)O(n)O(n) เวลา? ที่นี่ B(1)=0B(1)=0B(1) = 0. สำหรับตัวอย่างที่เป็นรูปธรรม: ∣∣∣AB804030107321966454∣∣∣|A843172965B000031644|\begin{vmatrix} A & 8 & 4 & 3 & 1 & …

1
ตัดขั้นต่ำในกราฟเส้นกำกับน้ำหนักด้วยน้ำหนักเชิงลบ
ฉันพบปัญหาต่อไปนี้: ให้กราฟไซโคลชีทที่มีน้ำหนักขอบมูลค่าจริงและสองจุดยอด s และ t คำนวณการตัดขั้นต่ำ สำหรับกราฟทั่วไปนี่คือ NP-hard เนื่องจากหนึ่งสามารถลด max-cut ได้เล็กน้อยโดยเพียงแค่ย้อนกลับน้ำหนักขอบ (แก้ไขฉันถ้าฉันผิด) สถานการณ์กับ DAG คืออะไร สามารถตัด min-cut (หรือ max-cut) ในเวลาพหุนามได้หรือไม่? มันเป็น NP-hard หรือไม่ถ้ามีมีขั้นตอนวิธีการประมาณที่รู้จักหรือไม่? ฉันพยายามหางานทำ แต่ไม่สามารถ (บางทีฉันแค่ใช้คำหลักผิดในการค้นหาของฉัน) ดังนั้นฉันจึงหวังว่าจะมีคนรู้ (หรือค้นหา) บางอย่างเกี่ยวกับเรื่องนี้

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