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

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

3
การคำนวณสตริงย่อยทั่วไปที่ยาวที่สุดของสองสตริงโดยใช้อาร์เรย์ต่อท้าย
หลังจากที่ฉันเรียนรู้วิธีสร้างอาร์เรย์ต่อท้ายในความซับซ้อนฉันสนใจที่จะค้นหาแอปพลิเคชันของอาร์เรย์ต่อท้าย หนึ่งในนั้นคือการหาย่อยทั่วไปที่ยาวที่สุดระหว่างสองสายในO ( N )เวลา ฉันพบบนอินเทอร์เน็ตอัลกอริทึมต่อไปนี้:O ( N)O(ยังไม่มีข้อความ)O(N)O ( N)O(ยังไม่มีข้อความ)O(N) รวมทั้งสองสายและBเป็นหนึ่งสายA BAAABBBBABAB คำนวณอาเรย์ต่อท้ายของBABAB คำนวณอาร์เรย์ (คำนำหน้าทั่วไปที่ยาวที่สุด)L CPLคPLCP คำตอบคือค่าที่ใหญ่ที่สุดL CP[ i ]LคP[ผม]LCP[i] ฉันพยายามที่จะใช้มัน แต่เนื่องจากรายละเอียดการใช้งานไม่ได้กล่าวไว้ (เช่นเมื่อทำการเชื่อมโยงสตริงฉันควรใส่อักขระพิเศษระหว่างพวกเขา ( ) หรือไม่) รหัสของฉันล้มเหลวในหลายกรณีทดสอบ มีคนอธิบายเพิ่มเติมเกี่ยวกับอัลกอริทึมนี้เพิ่มเติมหรือไม่คBAคBAcB ขอบคุณล่วงหน้า. หมายเหตุ:ฉันไม่รับประกันความถูกต้องของอัลกอริทึมนี้ ฉันพบมันในบล็อกและฉันไม่แน่ใจว่ามันใช้งานได้ หากคุณคิดว่ามันไม่ถูกต้องโปรดแนะนำอัลกอริทึมอื่น

2
ความผิดพลาดในอัลกอริทึมการคูณ -O (n lg n) นี้อยู่ที่ไหน
บล็อกโพสต์ปริศนาล่าสุดเกี่ยวกับการค้นหาสามช่องว่างเท่า ๆ กันนำฉันไปสู่คำถามสแต็คโอเวอร์โฟลว์พร้อมคำตอบยอดนิยมที่อ้างว่าทำในเวลา O (n lg n) ส่วนที่น่าสนใจคือว่าการแก้ปัญหาที่เกี่ยวข้องกับการ squaring พหุนาม, อ้างอิงกระดาษที่อธิบายถึงวิธีที่จะทำมันใน O (n LG n) เวลา ตอนนี้การคูณแบบพหุนามมีค่าเท่ากันกับการคูณตัวเลข ความแตกต่างที่แท้จริงเพียงอย่างเดียวคือการขาดการแบก แต่ ... การบรรทุกสามารถทำได้ในเวลา O (n lg n) ตัวอย่างเช่น: var value = 100; // = 0b1100100 var inputBitCount = value.BitCount(); // 7 (because 2^7 > 100 >= 2^6) var n = inputBitCount * …

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

6
จะมีอัลกอริทึมหมากรุกที่สมบูรณ์แบบได้หรือไม่?
อัลกอริทึมหมากรุกปัจจุบันไปประมาณ 1 หรือ 2 ระดับลงที่ต้นไม้ของเส้นทางที่เป็นไปได้ขึ้นอยู่กับการย้ายของผู้เล่นและการเคลื่อนไหวของฝ่ายตรงข้าม สมมติว่าเรามีพลังการคำนวณเพื่อพัฒนาอัลกอริทึมที่ทำนายการเคลื่อนไหวที่เป็นไปได้ทั้งหมดของคู่ต่อสู้ในเกมหมากรุก อัลกอริทึมที่มีเส้นทางที่เป็นไปได้ทั้งหมดที่ฝ่ายตรงข้ามสามารถใช้ในช่วงเวลาใดก็ได้ขึ้นอยู่กับการเคลื่อนไหวของผู้เล่น จะมีอัลกอริทึมหมากรุกที่สมบูรณ์แบบที่จะไม่สูญเสียหรือไม่? หรืออัลกอริทึมที่จะชนะเสมอ ฉันหมายความว่าในทางทฤษฎีแล้วใครบางคนที่สามารถทำนายการเคลื่อนไหวที่เป็นไปได้ทั้งหมดต้องสามารถหาวิธีที่จะเอาชนะพวกเขาทุกคนหรือเพียงแค่เลือกเส้นทางที่แตกต่างถ้าคน ๆ หนึ่งพาเขาไปสู่ความพ่ายแพ้ ..... แก้ไข - คำถามของฉันคืออะไร สมมติว่าเรามีพลังการคำนวณสำหรับอัลกอริทึมที่สมบูรณ์แบบที่สามารถเล่นได้อย่างดีที่สุด จะเกิดอะไรขึ้นเมื่อคู่ต่อสู้เล่นด้วยอัลกอริธึมที่เหมาะสมที่สุด ซึ่งจะใช้กับเกมที่มีผู้เล่น 2 คนที่มีจำนวน จำกัด (มีขนาดใหญ่มากหรือไม่มาก) จะมีอัลกอริธึมที่เหมาะสมที่สุดที่จะชนะได้หรือไม่? คำจำกัดความส่วนบุคคล: อัลกอริธึมที่เหมาะสมที่สุดคืออัลกอริธึมที่สมบูรณ์แบบที่ชนะเสมอ ... (ไม่ใช่อันที่ไม่เคยแพ้

2
เหตุใดจึงมีสภาพปกติในทฤษฎีบทหลัก
ฉันได้อ่านIntroduction to Algorithmsโดย Cormen และคณะ และฉันอ่านงบทฤษฎีบทปริญญาโทที่เริ่มต้นในหน้า 73 ในกรณีที่ 3 นอกจากนี้ยังมีเงื่อนไขปกติที่ต้องมีความพึงพอใจในการใช้ทฤษฎีบท: ... 3. ถ้า ฉ( n ) = Ω ( nเข้าสู่ระบบขa + ε)f(n)=Ω(nlogb⁡a+ε)\qquad \displaystyle f(n) = \Omega(n^{\log_b a + \varepsilon}) สำหรับค่าคงที่และ ifε > 0ε>0\varepsilon > 0 ฉ( n / b ) ≤ c f( n )af(n/b)≤cf(n)\qquad \displaystyle af(n/b) \leq cf(n) [ …

4
ให้ชุดของชุดค้นหาชุดที่เล็กที่สุดที่ประกอบด้วยองค์ประกอบอย่างน้อยหนึ่งจากแต่ละชุด
เมื่อได้รับเซตของชุดฉันต้องการหาชุดซึ่งทุกชุดในมีองค์ประกอบของอย่างน้อยหนึ่งรายการ ฉันต้องการให้มีองค์ประกอบให้น้อยที่สุดเท่าที่จะเป็นไปได้ในขณะที่ยังคงเป็นไปตามเกณฑ์นี้แม้ว่าอาจมีเล็กที่สุดมากกว่าหนึ่งตัวที่มีคุณสมบัตินี้ (โซลูชันไม่จำเป็นต้องมีเอกลักษณ์) M S S M M MSS\mathbf{S}MMMSSSSS\mathbf{S}MMMMMMMMM เป็นตัวอย่างที่เป็นรูปธรรมสมมติว่า setเป็นชุดธงประจำชาติและสำหรับแต่ละธงในองค์ประกอบคือสีที่ใช้ในธงประจำชาตินั้น สหรัฐอเมริกาจะมีและโมร็อกโกจะมี\} แล้วจะเป็นชุดของสีที่มีคุณสมบัติที่ว่าทุกชาติใช้ธงอย่างน้อยหนึ่งของสีในM( สีโอลิมปิกสีฟ้าสีดำสีแดงสีเขียวสีเหลืองและสีขาวเป็นตัวอย่างของมหรืออย่างน้อยก็ในปี 2463) S S S = { r e d , w h ฉันt e , b l u e } S = { r e d , g r e e n } M M MSS\mathbf{S}SSSSS\mathbf{S}S= …

1
ทหารทุกคนควรยิงในเวลาเดียวกัน
เมื่อฉันเป็นนักเรียนฉันเห็นปัญหาในหนังสือเรียนออกแบบระบบดิจิตอล / ตรรกะเกี่ยวกับทหาร N ที่ยืนเรียงกันและต้องการถ่ายภาพในเวลาเดียวกัน ปัญหาที่ยากขึ้นคือทหารยืนอยู่ในเครือข่ายทั่วไปแทนที่จะเป็นแถว ฉันแน่ใจว่านี่เป็นปัญหาคลาสสิก แต่ฉันจำชื่อไม่ได้ คุณเตือนฉันได้ไหม

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

3
วิธีการเข้าถึงปัญหากราฟที่เกี่ยวข้องกับไดนามิก
ฉันถามคำถามนี้ที่ stackoverflow ทั่วไปและฉันถูกนำไปที่นี่ มันจะดีถ้ามีใครสามารถอธิบายวิธีการแก้ปัญหากราฟบางส่วนหรือแบบไดนามิกโดยทั่วไป ตัวอย่างเช่น: ค้นหาเส้นทางที่สั้นที่สุดระหว่างจุดยอดสองจุดในกราฟถ่วงน้ำหนักแบบไม่ระบุทิศทางสำหรับอินสแตนซ์เมื่อลบขอบที่แต่ละอินสแตนซ์( u , v )(ยู,โวลต์)(u,v)nnn ค้นหาจำนวนของส่วนประกอบที่เชื่อมต่อในกราฟที่ไม่ได้ทำการบอกทิศทางสำหรับอินสแตนซ์ n เมื่อขอบถูกลบในแต่ละอินสแตนซ์ ฯลฯ ฉันเพิ่งพบปัญหาประเภทนี้ในการแข่งขันเขียนโปรแกรม ฉันค้นหาในเว็บและฉันพบบทความวิจัยมากมายเกี่ยวกับกราฟไดนามิก [1,2] ฉันอ่านคู่ของพวกเขาและฉันไม่สามารถหาสิ่งใดตรงไปข้างหน้า (การจัดกลุ่มการแยกคำ ฯลฯ ) ขออภัยที่คลุมเครือ ฉันซาบซึ้งจริง ๆ ถ้าบางคนสามารถให้พอยน์เตอร์ให้เข้าใจแนวคิดเหล่านี้ได้ดีขึ้น อัลกอริทึมกราฟแบบไดนามิกโดย D. Eppstein, Z. Galil, GF Italiano (1999) เส้นทางที่สั้นที่สุดบนกราฟไดนามิกโดย G. Nannicini, L. Liberti (2008)

2
Circle Circle Intersection ด้วย Sweep Line Algorithm
แต่น่าเสียดายที่ผมยังไม่ได้ดังนั้นที่แข็งแกร่งในการทำความเข้าใจกวาดสายอัลกอริทึม เอกสารและตำราเรียนทั้งหมดในหัวข้อได้อ่านไปแล้วอย่างไรก็ตามความเข้าใจยังห่างไกล เพื่อให้ชัดเจนฉันพยายามที่จะแก้ปัญหาการออกกำลังกายให้มากที่สุดเท่าที่จะทำได้ แต่งานที่สำคัญและน่าสนใจจริงๆยังคงเป็นสิ่งที่ท้าทายสำหรับฉัน แบบฝึกหัดต่อไปนี้ที่ฉันพบในบันทึกการบรรยายของการแยกส่วนบรรทัดโดยเจฟฟ์เอริกผู้มีอำนาจทุกอย่าง การออกกำลังกาย 2.อธิบายและวิเคราะห์อัลกอริทึม sweepline การกำหนดให้วงกลมในระนาบไม่ว่าจะเป็นที่สองตัดในO ( n log n )เวลา แต่ละวงกลมเอ็ดระบุไว้โดยศูนย์และรัศมีของมันเพื่อให้การป้อนข้อมูลที่ประกอบด้วยสามอาร์เรย์X [ 1 .. n ] , Y [ 1 .. n ]และR [ 1 .. n ] ใช้ความระมัดระวังอย่างถูกต้องใช้ดั้งเดิมในระดับต่ำnnnO(nlogn)O(nlog⁡n)O(n \log n)X[1..n],Y[1..n]X[1..n],Y[1..n]X[1.. n], Y [1.. n]R[1..n]R[1..n]R[1.. n] ลองทำสิ่งที่ซับซ้อนให้ง่ายขึ้น เรารู้อะไรเกี่ยวกับจุดตัดของวงกลม อะนาล็อกที่สามารถพบได้ด้วยการตัดกันของเส้น เส้นสองเส้นอาจตัดกันหากพวกมันอยู่ติดกันซึ่งสองวงควรมีคุณสมบัติใดเพื่อตัดกัน ให้เป็นระยะทางระหว่างศูนย์กลางของวงกลมr 0และr 1ศูนย์กลางของวงกลม พิจารณาบางกรณี:dddr0r0r_{0}r1r1r_{1} กรณีที่ 1: …

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

2
ฮีป - ให้อัลกอริทึมเวลา
อาจเป็นไปได้ว่าคำถามนี้ถูกถามมาก่อน มันมาจาก CLRS (2nd Ed) ปัญหา 6.5-8 - ให้อัลกอริทึมเวลาเพื่อรวมรายการที่เรียงลำดับkไว้ในรายการที่เรียงลำดับหนึ่งรายการโดยที่nคือจำนวนองค์ประกอบทั้งหมดในรายการอินพุตทั้งหมด (คำแนะนำ: ใช้ min-heap สำหรับการรวมk -way)O(nlgk)O(nlg⁡k)O(n \lg k)kkknnnkkk เนื่องจากมีรายการที่เรียงลำดับและค่าnทั้งหมดให้เราสมมติว่าแต่ละรายการมีnkkknnnหมายเลข kยิ่งไปกว่านั้นแต่ละรายการจะเรียงตามลำดับจากน้อยไปหามากและผลลัพธ์จะถูกเก็บไว้ในลำดับจากน้อยไปหามากnknk\frac{n}{k} โค้ดหลอกของฉันดูเหมือนว่านี้ - list[k] ; k sorted lists heap[k] ; an auxiliary array to hold the min-heap result[n] ; array to store the sorted list for i := 1 to k ; O(k) …

5
ความสำคัญของขอบน้ำหนักเชิงลบในกราฟคืออะไร?
ฉันทำแบบฝึกหัดการเขียนโปรแกรมแบบไดนามิกและพบอัลกอริทึม Floyd-Warshall เห็นได้ชัดว่าพบเส้นทางที่สั้นที่สุดของคู่ทั้งหมดสำหรับกราฟที่สามารถมีขอบน้ำหนักติดลบ แต่ไม่มีรอบลบ ดังนั้นฉันสงสัยว่าโลกแห่งความจริงมีความสำคัญต่อน้ำหนักเชิงลบอย่างไร? คำอธิบายภาษาอังกฤษแบบธรรมดาจะเป็นประโยชน์

2
โปรแกรมนี้จะยุติสำหรับ Integer ทุกคนหรือไม่
ในการทดสอบชิ้นส่วนสำหรับการเตรียม GATE มีคำถาม: f(n): if n is even: f(n) = n/2 else f(n) = f(f(n-1)) ผมตอบว่า "มันจะยุติสำหรับจำนวนเต็มทุกคน" เพราะแม้สำหรับจำนวนเต็มเชิงลบบางอย่างก็จะยุติการเป็นข้อผิดพลาดกองมากเกิน แต่เพื่อนของฉันไม่เห็นด้วยที่บอกว่าเนื่องจากนี่ไม่ใช่โค้ดที่นำมาใช้และเป็นรหัสเทียมก็จะเรียกซ้ำไม่สิ้นสุดในกรณีที่มีจำนวนเต็มลบ คำตอบใดถูกต้องและทำไม

5
วิธีการพิสูจน์การมีอยู่ของตัวเลขที่ไม่สามารถเขียนด้วยอัลกอริทึมใด ๆ
ฉันมีปัญหา: แสดงให้เห็นว่ามีจำนวนจริงซึ่งไม่มีโปรแกรมใดที่ทำงานได้นานอย่างไม่มีขีด จำกัด และเขียนเลขฐานสิบของตัวเลขนั้น ฉันคิดว่ามันสามารถแก้ไขได้โดยการลดปัญหา Halting แต่ฉันไม่รู้ว่าจะทำอย่างไร ฉันขอขอบคุณลิงก์ไปยังปัญหาที่คล้ายกันสำหรับการปฏิบัติต่อไป

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