คำถามติดแท็ก time-complexity

จำนวนทรัพยากรเวลา (จำนวนการดำเนินการปรมาณูหรือขั้นตอนเครื่อง) ที่จำเป็นในการแก้ปัญหาที่แสดงในแง่ของขนาดอินพุต หากคำถามของคุณเกี่ยวข้องกับการวิเคราะห์อัลกอริทึมให้ใช้แท็ก [การวิเคราะห์รันไทม์] แทน หากคำถามของคุณเกี่ยวข้องกับการคำนวณว่าจะเสร็จสิ้นหรือไม่ให้ใช้แท็ก [การคำนวณ] แทน ความซับซ้อนของเวลาอาจเป็นหัวข้อย่อยที่สำคัญที่สุดของทฤษฎีความซับซ้อน

6
เราจะสันนิษฐานได้ว่าการดำเนินการขั้นพื้นฐานกับตัวเลขต้องใช้เวลาคงที่
ตามปกติในขั้นตอนวิธีการที่เราไม่สนใจเกี่ยวกับการเปรียบเทียบนอกจากนี้หรือลบของตัวเลข - เราถือว่าพวกเขาทำงานในเวลา ) ตัวอย่างเช่นเราสมมติว่าสิ่งนี้เมื่อเราบอกว่าการเรียงลำดับแบบอิงการเปรียบเทียบคือO ( n log n )แต่เมื่อตัวเลขมีขนาดใหญ่เกินไปที่จะพอดีกับการลงทะเบียนเรามักจะแสดงมันเป็นอาร์เรย์ดังนั้นการดำเนินการพื้นฐานจำเป็นต้องมีการคำนวณเพิ่มเติมO ( 1 )O(1)O(1)O ( n บันทึกn )O(nlog⁡n)O(n\log n) มีหลักฐานแสดงหรือไม่ว่าการเปรียบเทียบตัวเลขสองตัว (หรือฟังก์ชันทางคณิตศาสตร์แบบดั้งเดิมอื่น ๆ ) สามารถทำได้ใน ? ถ้าไม่ใช่ทำไมเราถึงบอกว่าการเรียงลำดับโดยการเปรียบเทียบนั้นเป็นO ( n log n ) ?O ( 1 )O(1)O(1)O ( n บันทึกn )O(nlog⁡n)O(n\log n) ฉันพบปัญหานี้เมื่อฉันตอบคำถามมากและฉันรู้ว่าอัลกอริทึมของฉันไม่ได้เพราะไม่ช้าก็เร็วผมควรจะจัดการกับใหญ่ int ยังมันไม่ได้หลอกพหุนามอัลกอริทึมเวลามันเป็นPO ( n )O(n)O(n)PPP

8
สัญชาตญาณของอัลกอริทึมสำหรับความซับซ้อนลอการิทึม
ฉันเชื่อว่าฉันมีความเข้าใจที่เหมาะสมของความซับซ้อนเช่น , Θ ( n )และΘ ( n 2 )O (1)O(1)\mathcal{O}(1)Θ ( n )Θ(n)\Theta(n)Θ ( n2)Θ(n2)\Theta(n^2) ในแง่ของรายการคือการค้นหาอย่างต่อเนื่องดังนั้นมันจึงเป็นแค่การนำส่วนหัวของรายการ Θ ( n )คือที่ที่ฉันจะเดินรายการทั้งหมดและΘ ( n 2 )กำลังเดินรายการหนึ่งครั้งสำหรับแต่ละองค์ประกอบในรายการO (1)O(1)\mathcal{O}(1)Θ ( n )Θ(n)\Theta(n)Θ ( n2)Θ(n2)\Theta(n^2) มีวิธีที่เข้าใจง่ายคล้ายกันในการเข้าใจนอกเหนือจากการรู้ว่ามันอยู่ที่ไหนสักแห่งระหว่างO ( 1 )และΘ ( n )หรือไม่Θ ( บันทึกn )Θ(log⁡n)\Theta(\log n)O (1)O(1)\mathcal{O}(1)Θ ( n )Θ(n)\Theta(n)

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

2
หาค่ามัธยฐานของอาเรย์ไม่ได้เรียงลำดับใน
เพื่อหาค่ามัธยฐานของอาร์เรย์ที่ไม่ได้เรียงลำดับที่เราสามารถทำให้นาทีกองในเวลาสำหรับnองค์ประกอบและจากนั้นเราสามารถแยกหนึ่งโดยหนึ่งn / 2องค์ประกอบที่จะได้รับค่ามัธยฐาน แต่วิธีการนี้จะใช้เวลาO ( n log n )เวลาO ( n บันทึกn )O(nlog⁡n)O(n\log n)nnnn / 2n/2n/2O ( n บันทึกn )O(nlog⁡n)O(n \log n) เราสามารถทำเช่นเดียวกันโดยวิธีการบางอย่างในเวลา ? ถ้าเราทำได้แล้วได้อย่างไรO(n)O(n)O(n)

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

1
มีโครงสร้างข้อมูล 'สตริงสแต็ค' ที่สนับสนุนการดำเนินงานของสตริงเหล่านี้หรือไม่
ฉันกำลังมองหาโครงสร้างข้อมูลที่เก็บชุดสตริงไว้ในชุดอักขระสามารถทำการดำเนินการต่อไปนี้ได้ เราแสดงว่าเป็นโครงสร้างข้อมูลการจัดเก็บชุดของสตริงSD ( S ) SΣΣ\SigmaD (S)D(S)\mathcal{D}(S)SSS Add-Prefix-Setบน : กำหนดชุดของ (อาจว่างเปล่า) สตริงซึ่งขนาดถูก จำกัด ด้วยค่าคงที่และความยาวสตริงถูก จำกัด โดยค่าคงที่ส่งคืน\}) ทั้งสองนี้คง bounding มีทั่วโลก: พวกเขาเป็นเหมือนกันสำหรับปัจจัยการผลิตทั้งหมดTT D ( { t s | t ∈ T , s ∈ S } ) TD (S)D(S)\mathcal{D}(S)TTTD ({ts | t∈T , s ∈ S} )D({ts | t∈T,s∈S})\mathcal{D}( \{ t s\ …

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คือระยะทางที่สั้นที่สุดระหว่างชุดของจุดยอดทั้งหมดในกราฟ ฉันไม่รู้ว่าจะทำอย่างไรเกี่ยวกับเรื่องนี้ฉันต้องการการวิเคราะห์ที่สมบูรณ์เกี่ยวกับวิธีการแก้ปัญหาเช่นนี้

2
โครงสร้างข้อมูลพร้อมการค้นหาแทรกและลบในเวลาตัดจำหน่าย
มีโครงสร้างข้อมูลเพื่อรักษารายการที่สั่งซื้อซึ่งสนับสนุนการดำเนินการต่อไปนี้ในเวลาตัดจำหน่ายหรือไม่O ( 1 )O(1)O(1) GetElement (k) : ส่งคืนองค์ประกอบที่ของรายการkkk InsertAfter (x, y) : ใส่องค์ประกอบใหม่ y ลงในรายการทันทีหลังจาก x ลบ (x) : ลบ x ออกจากรายการ สำหรับการดำเนินการสองครั้งล่าสุดคุณสามารถสมมติได้ว่า x ถูกกำหนดให้เป็นตัวชี้ไปยังโครงสร้างข้อมูลโดยตรง InsertElement ส่งคืนตัวชี้ที่สอดคล้องกันสำหรับ y InsertAfter (NULL, y) แทรก y ที่จุดเริ่มต้นของรายการ ตัวอย่างเช่นเริ่มต้นด้วยโครงสร้างข้อมูลที่ว่างเปล่าการดำเนินการต่อไปนี้จะอัพเดตรายการที่สั่งซื้อตามที่แสดงด้านล่าง: InsertAfter (NULL, a) [a]⟹⟹\implies InsertAfter (NULL, b) [b, a]⟹⟹\implies InsertAfter (b, c) [b, c, a]⟹⟹\implies …

3
เป็นไปได้จริงหรือที่จะพิสูจน์ขอบเขตที่ต่ำกว่า?
เมื่อพิจารณาจากปัญหาการคำนวณงานในการค้นหาขอบเขตที่ต่ำกว่าสำหรับการคำนวณดังกล่าวเป็นไปได้จริงหรือ ฉันคิดว่ามันจะทำให้ขั้นตอนการคำนวณเป็นขั้นตอนเดียวและแบบจำลองใดที่เราใช้สำหรับการพิสูจน์ แต่จากนั้นเราจะพิสูจน์ขอบเขตที่ต่ำกว่าโดยทั่วไปหรือไม่? สิ่งที่ฉันหมายถึงคือเราสามารถพิสูจน์บางสิ่งเช่น "ปัญหาไม่สามารถแก้ไขได้เร็วกว่าเวลา " มากกว่า "ปัญหาสามารถแก้ไขได้ในเวลาหรือเร็วกว่า"?t ( X ) X t ( X )XXXt(X)t(X)t(X)XXXt(X)t(X)t(X) ฉันได้พยายามค้นหาข้อมูลโดยเฉพาะเกี่ยวกับขอบเขตที่ต่ำกว่าและการพิสูจน์ของพวกเขาแล้ว แต่ฉันไม่สามารถหาข้อเสนอแนะใด ๆ ที่น่าสนใจเกี่ยวกับหนังสือ / เอกสาร / เว็บไซต์ในเรื่องนี้

2
เหตุใด push_back ใน C ++ เวกเตอร์จึงตัดจำหน่ายอย่างต่อเนื่อง
ฉันกำลังเรียนรู้ C ++ และพบว่าเวลาทำงานของฟังก์ชัน push_back สำหรับเวกเตอร์นั้นคงที่ "ตัดจำหน่าย" เอกสารอธิบายเพิ่มเติมว่า "หากการจัดสรรใหม่เกิดขึ้นการจัดสรรใหม่จะเป็นแบบเชิงเส้นในขนาดทั้งหมด" นี่ไม่ควรหมายความว่าฟังก์ชัน push_back เป็นโดยที่คือความยาวของเวกเตอร์ ท้ายที่สุดเราสนใจการวิเคราะห์กรณีที่เลวร้ายที่สุดใช่ไหม?O ( n )O(n)O(n)nnn ฉันเดาว่าสำคัญไม่เข้าใจว่าคำคุณศัพท์ "ตัดจำหน่าย" เปลี่ยนแปลงเวลาทำงานอย่างไร

2
ปัญหาของพนักงานขายที่เดินทางสามารถพิสูจน์ได้ในเวลาพหุนาม
ดังนั้นฉันจึงเข้าใจแนวคิดที่ว่าปัญหาการตัดสินใจถูกกำหนดเป็น มีเส้นทาง P เช่นนั้นราคาต่ำกว่า C หรือไม่? และคุณสามารถตรวจสอบสิ่งนี้ได้อย่างง่ายดายโดยตรวจสอบเส้นทางที่คุณได้รับ อย่างไรก็ตามจะเกิดอะไรขึ้นถ้าไม่มีเส้นทางที่ตรงกับเกณฑ์นี้ คุณจะยืนยันคำตอบของ "ไม่" โดยไม่แก้ปัญหาเส้นทาง TSP ที่ดีที่สุดอย่างไรและการค้นหาคำตอบที่ดีที่สุดมีราคาแย่กว่า C

6
ในเวลา O (n): ค้นหาองค์ประกอบที่ยิ่งใหญ่ที่สุดในชุดซึ่งการเปรียบเทียบไม่ได้ผ่านการถ่ายทอด
หัวข้อระบุคำถาม เรามีรายการองค์ประกอบที่เราสามารถเปรียบเทียบได้ (พิจารณาว่าอะไรคือสิ่งที่ยิ่งใหญ่ที่สุด ) องค์ประกอบไม่สามารถเท่ากับ ประเด็นสำคัญ: การเปรียบเทียบไม่ใช่การถ่ายทอด (คิดว่ากรรไกรกระดาษหิน): สิ่งนี้เป็นจริง: A> B, B> C, C> A (โปรดทราบว่านี่ไม่ใช่การป้อนข้อมูลที่ถูกต้องเนื่องจากไม่มีคำตอบที่ถูกต้องที่นี่ฉันแค่อธิบายว่า " การเปรียบเทียบที่ไม่เกี่ยวกับสกรรมกริยา "หมายถึง) แต่ละอาร์เรย์อินพุตจะรับประกันว่าจะมีคำตอบ ยิ่งใหญ่ที่สุดหมายถึงองค์ประกอบจะต้องมากกว่าองค์ประกอบอื่น ๆ คุณสมบัติการสนทนาถือเช่น A> B หมายความว่า B <A ตัวอย่าง: Input: [A,B,C,D] A > B, B > C, C > A D > A, D > B, D > C Output: …

2
จะหาองค์ประกอบของลำดับ Digit Sum ได้อย่างมีประสิทธิภาพได้อย่างไร
เพิ่งหมดความสนใจฉันพยายามที่จะแก้ปัญหาจากหมวด "ล่าสุด" ของ Project Euler ( ลำดับ Digit Sum ) แต่ฉันไม่สามารถคิดวิธีแก้ปัญหาได้อย่างมีประสิทธิภาพ ปัญหามีดังต่อไปนี้ (ในลำดับคำถามดั้งเดิมมีสองรายการที่เริ่มต้น แต่ไม่เปลี่ยนลำดับ): ลำดับ Digit Sum คือ 1,2,4,8,16,23,28,38,49 .... โดยที่ลำดับของลำดับคือผลรวมของตัวเลขที่อยู่ก่อนหน้าในลำดับ ค้นหาคำศัพท์ลำดับที่ลำดับnthnเสื้อชั่วโมงn^{th}1015th1015เสื้อชั่วโมง10^{15}th โซลูชันไร้เดียงสาไม่สามารถใช้งานได้เนื่องจากใช้เวลานาน ฉันพยายามลดปัญหาให้เป็นกรณีของการยกกำลังเมทริกซ์ (ซึ่งใช้เวลา )) แต่ไม่สามารถเกิดขึ้นได้กับการเกิดซ้ำที่เหมาะสมกับเกณฑ์เชิงเส้นเนื่องจากการเกิดซ้ำสำหรับลำดับนี้คือ ค่อนข้างแปลก จะเห็นได้ว่าลำดับถูกควบคุมโดยการเกิดซ้ำ:O(log(1015))O(ล.โอก.(1015))O(log ( 10^{15})) an=an−1+d(an−1).....(1)an=an−1+d(an−1).....(1) a_n = a_{n-1} + d( a_{n-1} ) ..... (1 ) โดยที่คือคำของลำดับและคือฟังก์ชันซึ่งเมื่อได้รับจำนวนธรรมชาติเป็นอินพุตจะส่งคืนผลรวมของตัวเลขของตัวเลข (เช่น. ) วิธีที่สองของฉันคือพยายามหารูปแบบบางอย่างในลำดับ จะเห็นได้ว่าคำสองสามคำแรกของลำดับสามารถเขียนเป็นn t h danana_nnthnthn^{th}dddd(786)=21d(786)=21\;d(786)=21 …

2
ค้นหาอย่างน้อยสองเส้นทางที่มีความยาวเท่ากันในกราฟกำกับ
สมมติว่าเรามีที่กำกับกราฟและสองโหนดและBฉันต้องการทราบว่ามีอัลกอริทึมสำหรับคำนวณปัญหาการตัดสินใจต่อไปนี้หรือไม่:A BG=(V,E)G=(V,E)G=(V,E)AAABBB มีอย่างน้อยสองเส้นทางระหว่างและที่มีความยาวเท่ากันหรือไม่?BAAABBB แล้วความซับซ้อนล่ะ? ฉันจะแก้มันในเวลาพหุนามได้หรือไม่? ฉันต้องการเพิ่มข้อ จำกัด ใหม่บนกราฟบางทีปัญหาอาจแก้ไขได้มากกว่า ในเมทริกซ์คำคุณศัพท์ทุกคอลัมน์ไม่ว่างเปล่า ดังนั้นทุกโหนดมีลูกศรอย่างน้อยหนึ่งลูกที่อินพุตและมีอย่างน้อยหนึ่งโหนดที่เชื่อมต่อกับตัวเอง ดังนั้นถ้าโหนดคือโหนด th ดังนั้นคือขอบในกราฟ( ฉัน, ฉัน)iii(i,i)(i,i)(i,i)

1
ไม่มีโครงสร้างล็อคข้อมูลต้นไม้พร้อมกันอย่างต่อเนื่องที่ล็อคตลอดเวลา?
ฉันอ่านวรรณกรรมเมื่อเร็ว ๆ นี้และพบว่ามีโครงสร้างข้อมูลที่น่าสนใจอยู่บ้าง ฉันได้ค้นคว้าวิธีที่แตกต่างหลากหลายในการทำให้เวลาการอัปเดตลดลงเป็นเวลาอัปเดตกรณีที่เลวร้ายที่สุด [1-7]O ( 1 )O(1)\mathcal{O}(1) เมื่อเร็ว ๆ นี้ฉันเริ่มค้นหาโครงสร้างข้อมูลที่ไม่ล็อคเพื่อสนับสนุนการเข้าถึงพร้อมกันอย่างมีประสิทธิภาพ มีกรณีที่เลวร้ายที่สุดเทคนิคการอัปเดตใด ๆ เหล่านี้ถูกนำมาใช้ในการใช้โครงสร้างข้อมูลที่ไม่ล็อคหรือไม่?O ( 1 )O(1)\mathcal{O}(1) ฉันถามเพราะ; สำหรับฉันพวกเขาดูเหมือนการขยายการปฏิบัติที่ชัดเจนของ "การเพิ่มประสิทธิภาพเชิงทฤษฎี" นี้ Tarjan, Robert Endre “ การปรับปรุงโครงสร้างการค้นหาที่สมดุลในการหมุน O (1)” ตัวประมวลผลข้อมูล 16, ไม่ใช่ 5 (1983): 253 - 257 Driscoll, JR, N Sarnak, DD Sleator และ RE Tarjan “ การทำให้โครงสร้างข้อมูลคงทน” ในการประชุมวิชาการ ACM ประจำปีที่สิบแปดเรื่องทฤษฎีคอมพิวเตอร์, …

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