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

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

3
ทำไมไม่ลองแสดงตัวเลขในอัลกอริธึมเชิงตัวเลข?
อัลกอริธึมเวลาแบบหลอกเทียมคืออัลกอริธึมที่มีเวลาทำงานพหุนามกับค่าอินพุต (ขนาด) แต่เวลาทำงานแบบเอ็กซ์โพเนนเชียลตามขนาดอินพุต (จำนวนบิต) ตัวอย่างเช่นการทดสอบว่าตัวเลขnnnเป็นจำนวนเฉพาะหรือไม่ต้องการวนซ้ำผ่านตัวเลขตั้งแต่ 2 ถึงn−1n−1n-1และตรวจสอบว่าnnn mod iiiเป็นศูนย์หรือไม่ หากตัวดัดแปลงใช้เวลา O (1) ความซับซ้อนของเวลาโดยรวมจะเป็น O (n) แต่ถ้าเราปล่อยให้xxxเป็นจำนวนบิตที่ต้องการในการเขียนอินพุตดังนั้นx=lognx=log⁡nx = \log n (ไบนารี) ดังนั้นn=2xn=2xn = 2^xและเวลาการทำงานของปัญหาจะเป็น O ( 2x2x2^x ) ซึ่งเป็นเลขชี้กำลัง คำถามของฉันคือถ้าเราพิจารณาการเป็นตัวแทนของอินพุตnnn , ดังนั้นเสมอแล้วเวลาx=nx=nx=nหลอก - พหุนามจะเท่ากับความซับซ้อนของเวลาพหุนาม เหตุใดเราจึงไม่ทำเช่นนี้ ยิ่งไปกว่านั้นเนื่องจากมีอัลกอริธึมเวลาหลอกเทียมสำหรับเป้โดยใช้x=nx=nx=n , เป้จะเป็นพหุนามเป็นผลลัพธ์ P = NP

2
ความแตกต่างระหว่างความซับซ้อนของเวลาและความซับซ้อนของการคำนวณ
สำหรับการวัดความซับซ้อนของอัลกอริธึมมันซับซ้อนกับเวลาหรือความซับซ้อนในการคำนวณหรือไม่ ความแตกต่างระหว่างพวกเขาคืออะไร? ฉันใช้ในการคำนวณจำนวนสูงสุด (แย่ที่สุด) ของการดำเนินการขั้นพื้นฐาน (คิดต้นทุนมากที่สุด) ในอัลกอริทึม

2
มีอัลกอริธึมที่มีประสิทธิภาพสำหรับการเทียบเคียงนิพจน์หรือไม่?
เช่น ?xy+x+y=x+y(x+1)xy+x+y=x+y(x+1)xy+x+y=x+y(x+1) นิพจน์นั้นมาจากพีชคณิตระดับมัธยมธรรมดา แต่ จำกัด เฉพาะการเพิ่มและการคำนวณทางคณิตศาสตร์ (เช่น ) โดยไม่มีการลบการลบหรือการหาร ตัวอักษรเป็นตัวแปร2+2=4;2.3=62+2=4;2.3=62+2=4; 2.3=6 หากเป็นไปได้เราสามารถห้ามการแสดงออกใด ๆ ที่แสดงด้วยค่าตัวเลขอื่นที่ไม่ใช่ ; เช่นไม่ใช่หรือหรือ :111x2x2x^23x3x3x444 หลายเส้นไม่มีพลังอื่นใดนอกจาก :ก็โอเค แต่ไม่ใช่และไม่ใช่ทุกอย่างที่สามารถแทนได้เช่นเดียวกับใน การขยายเต็มไปสู่ผลรวมของผลิตภัณฑ์เช่นไม่ใช่ ; 111x+xy≡x1+x1y1x+xy≡x1+x1y1x+xy \equiv x^1+x^1y^1x2+x3y4x2+x3y4x^2+x^3y^4x(x+y)≡x2+yx(x+y)≡x2+yx(x+y) \equiv x^2+y ทั้งหมดไม่มีสัมประสิทธิ์นอกเหนือจาก :ก็โอเค แต่ไม่ใช่และไม่ใช่ทุกอย่างที่สามารถแทนได้เช่นเดียวกับที่ขยายเต็มไปจนถึงผลรวมของ - ผลิตภัณฑ์เช่นไม่ใช่ ; และ 111x+xy≡1.x+1.xyx+xy≡1.x+1.xyx+xy \equiv 1.x+1.xy2x+3xy2x+3xy2x+3xya(x+y)+x(a+b)≡2ax+ay+bxa(x+y)+x(a+b)≡2ax+ay+bxa(x+y)+x(a+b) \equiv 2ax+ay+bx ไม่มีค่าคงที่อื่นที่ไม่ใช่ : อีกครั้งในผลรวมของผลิตภัณฑ์ที่ขยายตัวอย่างเต็มที่ไม่ใช่111(a+1)+(b+1)≡a+b+2(a+1)+(b+1)≡a+b+2(a+1)+(b+1) \equiv a+b+2 Q.Q.Q.มีอัลกอริธึมที่มีประสิทธิภาพในการพิจารณาว่าสองนิพจน์นั้นเทียบเท่ากันหรือไม่? เพื่อแสดงให้เห็นต่อไปนี้เป็นอัลกอริทึมแรงเดรัจฉานที่ไม่มีประสิทธิภาพพร้อมเวลาอธิบาย: ขยายทั้งสองนิพจน์ให้เป็นผลรวมของผลิตภัณฑ์ซึ่งสามารถตรวจสอบได้อย่างง่ายดายสำหรับการเทียบเท่า (เพียงแค่ไม่สนใจคำสั่งซื้อเนื่องจากการเดินทาง / เชื่อมโยงสามารถเรียงลำดับใหม่) …

6
การหาค่า XOR สูงสุดของตัวเลขสองตัวในช่วงเวลาหนึ่ง: เราจะทำได้ดีกว่าสมการกำลังสองหรือไม่?
สมมติว่าเรากำลังได้รับสองหมายเลขและและที่เราต้องการที่จะหาสำหรับL \ le i, \, J \ le Rlllrrrmax(i⊕j)max(i⊕j)\max{(i\oplus j)}l≤i,j≤rl≤i,j≤rl\le i,\,j\le r อัลกอริทึมnaïveเพียงตรวจสอบคู่ที่เป็นไปได้ทั้งหมด เช่นในทับทิมเรามี: def max_xor(l, r) max = 0 (l..r).each do |i| (i..r).each do |j| if (i ^ j > max) max = i ^ j end end end max end ฉันรู้สึกว่าเราสามารถทำได้ดีกว่าสมการกำลังสอง มีอัลกอริทึมที่ดีกว่าสำหรับปัญหานี้หรือไม่?

1
ขอบเขตรันไทม์เป็นสิ่งที่ไม่สามารถตัดสินใจได้หรือไม่?
ปัญหา จากเครื่องทัวริงซึ่งรู้จักรันไทม์O ( g ( n ) )เกี่ยวกับความยาวอินพุตnคือรันไทม์ของM ∈ O ( f ( n ) )หรือไม่MMMต (ก( n ) )O(ก.(n)){O}(g(n))nnnM∈O(f(n))M∈O(f(n))M \in {O}(f(n)) เป็น decidable ปัญหาดังกล่าวสำหรับบางคู่ขี้ปะติ๋วของและฉ ? วิธีการแก้ปัญหาเป็นที่น่ารำคาญถ้ากรัม( n ) ∈ O ( F ( n ) )gggfffg(n)∈O(f(n))g(n)∈O(f(n))g(n) \in O(f(n)) สิ่งนี้เกี่ยวข้องกับปัญหาขอบเขตรันไทม์ใน P สามารถตัดสินใจได้หรือไม่? (คำตอบ: ไม่ได้) เราสามารถหาคำตอบได้จากViolaว่าถ้าและf ( n ) ∉ O …

1
อัลกอริทึม
สมมติว่าเราจะได้รับเลขที่แตกต่างกันเช่นว่าสำหรับบางคงและสำหรับทุกฉันnnna1,a2,…,ana1,a2,…,ana_1, a_2, \dots, a_n0≤ai≤kn0≤ai≤kn0 \le a_i \le knk>0k>0k \gt 0iii เรามีความสนใจในการหาข้อหาทุกคู่ที่เป็นไปได้สรุปa_j ( อนุญาตให้ )Sij=ai+ajSij=ai+ajS_{ij} = a_i + a_ji=ji=ji = j อัลกอริทึมหนึ่งคือการสร้างพหุนามของระดับและคำนวณสแควร์โดยใช้วิธีการแปลงฟูริเยร์และอ่านพลังกับพวกมัน สัมประสิทธิ์ในพหุนามผลลัพธ์ นี่เป็นอัลกอริทึมเวลาP(x)=∑nj=1xajP(x)=∑j=1nxajP(x) = \sum_{j=1}^{n} x^{a_j}≤kn≤kn\le knO(nlogn)O(nlog⁡n)O(n \log n) ฉันมีสองคำถาม: มีอัลกอริทึมซึ่งไม่ได้ใช้ FFT หรือไม่?O(nlogn)O(nlog⁡n)O(n \log n) รู้จักอัลกอริทึมที่ดีกว่า (เช่น ) หรือไม่ (อนุญาต FFT)o(nlogn)o(nlog⁡n)o(n \log n)

2
Set Similarity - คำนวณดัชนี Jaccard โดยไม่มีความซับซ้อนเป็นกำลังสอง
ฉันมีกลุ่มของชุด n ชุดซึ่งฉันต้องการคำนวณค่าของ "ไม่เหมือนใคร" หรือ "ความคล้ายคลึงกัน" ฉันตัดสินดัชนี Jaccardเป็นตัวชี้วัดที่เหมาะสม น่าเสียดายที่ดัชนี Jaccard ทำงานได้ครั้งละสองชุดเท่านั้น ในการคำนวณความคล้ายคลึงกันระหว่างชุดทั้งหมดชุดจะต้องมีการคำนวณตามลำดับ Jaccardnnnn2n2n^2 (ถ้าช่วยได้มักจะอยู่ระหว่าง 10 ถึง 10,000 และแต่ละชุดมีองค์ประกอบโดยเฉลี่ย 500 ชุดในท้ายที่สุดฉันไม่สนใจว่าชุดสองชุดใดที่คล้ายกัน - แต่ฉันสนใจสิ่งที่มีความคล้ายคลึงกันภายใน ของกลุ่มทั้งหมดของชุดคือ (กล่าวอีกนัยหนึ่งคือค่าเฉลี่ย (หรืออย่างน้อยก็ประมาณค่าความถูกต้องที่เพียงพอเพียงพอของดัชนี Jaccard ทั้งหมดในกลุ่ม))nnn สองคำถาม: มีวิธีที่จะใช้ดัชนี Jaccard โดยไม่มีความซับซ้อนหรือไม่?n2n2n^2 มีวิธีที่ดีกว่าในการคำนวณความเหมือน / ไม่เหมือนกันของชุดในกลุ่มของชุดกว่าวิธีที่ฉันแนะนำข้างต้นหรือไม่

2
การแลกเปลี่ยนพื้นที่เวลาสำหรับปัญหาองค์ประกอบที่ขาดหายไป
นี่เป็นปัญหาที่รู้จักกันดี รับอาร์เรย์A[1…n]A[1…n]A[1\dots n]ของจำนวนเต็มบวกเอาท์พุทจำนวนเต็มบวกที่เล็กที่สุดที่ไม่ได้อยู่ในอาร์เรย์ ปัญหาสามารถแก้ไขได้ในพื้นที่และเวลาO(n)O(n)O(n) : อ่านอาร์เรย์ติดตามในพื้นที่ไม่ว่าจะเป็นเกิดขึ้นสแกนหาองค์ประกอบที่เล็กที่สุดO(n)O(n)O(n)1,2,…,n+11,2,…,n+11,2,\dots,n+1 ฉันสังเกตเห็นว่าคุณสามารถแลกเปลี่ยนพื้นที่เวลา ถ้าคุณมีหน่วยความจำเท่านั้นคุณสามารถทำมันได้ในรอบและได้รับเวลา(kn) ในกรณีพิเศษมีอัลกอริทึมกำลังสอง - เวลาคงที่แน่นอนO(nk)O(nk)O(\frac{n}{k})kkkO(kn)O(kn)O(k n) คำถามของฉันคือ: สิ่งนี้เป็นการแลกเปลี่ยนที่ดีที่สุดหรือไม่คือ ? โดยทั่วไปแล้วเราจะพิสูจน์ขอบเขตดังกล่าวได้อย่างไรtime⋅space=Ω(n2)time⋅space=Ω(n2)\operatorname{time} \cdot \operatorname{space} = \Omega(n^2) สมมติว่ารุ่น RAM พร้อมเลขคณิตที่ จำกัด และการเข้าถึงอาร์เรย์ใน O (1) แบบสุ่ม แรงบันดาลใจสำหรับปัญหานี้: แลกเปลี่ยนพื้นที่เวลาสำหรับ palindromes ในรูปแบบเทปเดียว (ดูตัวอย่างที่นี่ )

1
การหาดาว 5 แฉกในเวลาพหุนาม
ฉันต้องการพิสูจน์ว่านี่เป็นส่วนหนึ่งของการบ้านสำหรับหลักสูตรที่ฉันเรียนอยู่ ฉันกำลังมองหาความช่วยเหลือในการดำเนินการต่อไม่ใช่คำตอบ นี่คือคำถามที่สงสัย: ดาว 5 แฉกในกราฟที่ไม่ได้บอกทิศทางเป็น 5 กลุ่ม แสดงให้เห็นว่า 5 แฉก-STAR ∈P∈P\in Pที่ 5 แฉก-STAR = {<G>{<G>\{ :G:G: Gมี 5 แฉกดาวเป็น subgraph }}}\} ในกรณีที่เป็นก๊กก๊ก = {(G,k):G{(G,k):G\{(G, k) : Gเป็นกราฟไม่มีทิศทางGGGกับkkk -clique }}}\} ตอนนี้ปัญหาของฉันคือสิ่งนี้ดูเหมือนจะเป็นการแก้ปัญหา CLIQUE การพิจารณาว่ากราฟมีกลุ่มที่มีข้อ จำกัด เพิ่มเติมที่ต้องพิจารณาว่า CLIQUE ก่อตัวเป็นดาว 5 แฉกหรือไม่ นี้น่าจะเกี่ยวข้องกับการคำนวณทางเรขาคณิตบางบนพื้นฐานความรู้ของดาว 5 แฉก อย่างไรก็ตามในทฤษฎีการคำนวณของ Michael Sipser's , pg 268 มีหลักฐานแสดงว่า …

2
ความซับซ้อนของพลังการคำนวณเมทริกซ์
ฉันสนใจในการคำนวณ 'พลังของ TH n × nเมทริกซ์ สมมติว่าเรามีขั้นตอนวิธีการคูณเมทริกซ์ซึ่งทำงานในO ( M ( n ) )เวลา จากนั้นหนึ่งสามารถคำนวณA nในเวลาO ( M ( n ) log ( n ) )ได้อย่างง่ายดาย เป็นไปได้หรือไม่ที่จะแก้ปัญหานี้โดยใช้เวลาน้อยลงnnnn×nn×nn\times nAAAO(M(n))O(M(n))\mathcal{O}(M(n))AnAnA^nO(M(n)log(n))O(M(n)log⁡(n))\mathcal{O}(M(n)\log(n)) โดยทั่วไปรายการเมทริกซ์สามารถมาจาก semiring แต่คุณสามารถใช้โครงสร้างเพิ่มเติมได้หากมันช่วยได้ หมายเหตุ: ฉันเข้าใจว่าในการคำนวณทั่วไปในเวลาo ( M ( n ) log ( m ) )จะให้อัลกอริทึมo ( log m )สำหรับการยกกำลัง แต่ปัญหาที่น่าสนใจจำนวนหนึ่งลดลงเป็นกรณีพิเศษของการยกกำลังเมทริกซ์โดยที่ m = O …

4
กราฟมอร์ฟิซึ่มได้รับการแก้ไขหรือไม่?
หน้าปัญหากราฟมอร์ฟิสม์ของวิกิพีเดียดูเหมือนจะบ่งบอกว่าไม่มีมันยังไม่ได้รับการแก้ไข อย่างไรก็ตามเพื่อนของฉันได้ชี้ให้เห็นอัลกอริทึมเวลาพหุนามสำหรับกราฟมอร์ฟิซึ่ม ฉันไม่ซับซ้อนพอที่จะทำตามเหตุผลในหนังสือพิมพ์ ฉันมีความพยายามอย่างคร่าวๆของตัวเองในอัลกอริธึมเวลาพหุนามโดยไม่มีการพิสูจน์ แต่ฉันอยากรู้ว่าปัญหานี้ได้รับการแก้ไขสำเร็จหรือไม่ก่อนดำเนินการต่อ ดังนั้นปัญหามอร์ฟิซึ่มกราฟได้รับการแก้ไขหรือไม่?

2
การวิเคราะห์เวลาอัลกอริทึม“ ขนาดอินพุต” กับ“ องค์ประกอบอินพุต”
ฉันยังสับสนอยู่บ้างกับคำว่า "ความยาวขาเข้า" และ "ขนาดอินพุต" เมื่อใช้ในการวิเคราะห์และอธิบายขอบเขตบนที่ไม่มีอาการสำหรับอัลกอริทึม ดูเหมือนว่าความยาวของอัลกอริทึมนั้นขึ้นอยู่กับชนิดของข้อมูลจำนวนมากและอัลกอริทึมที่คุณกำลังพูดถึง ผู้เขียนบางคนอ้างถึงความยาวอินพุตกับขนาดของอักขระที่ต้องใช้เพื่อแสดงอินพุตดังนั้น "abcde" หากใช้เป็นชุดอินพุตในอัลกอริทึมจะมี "ความยาวอินพุต" 6 ตัว หากแทนที่จะเป็นตัวอักษรเรามีจำนวน (เช่นจำนวนเต็ม) บางครั้งการแทนแบบไบนารี่จะใช้แทนตัวอักษรดังนั้น "ความยาวอินพุต" จะถูกคำนวณเป็น (เป็น L เป็นจำนวนสูงสุดในชุดอินพุต)ยังไม่มีข้อความ∗ l o g( L )N∗log(L)N*log(L) มีปัญหาอื่น ๆ ที่แม้ว่าชุดอินพุตเป็นตัวเลข แต่พวกเขาอธิบาย "ความยาวอินพุต" เป็น "ตัวแปรการตัดสินใจ" ดังนั้นสำหรับชุดอินพุตความยาว N ที่มีตัวเลขในช่วงความยาวอินพุตนั้นคือ เพียงแค่ N (ผลรวมย่อยเช่น) หรือยิ่งซับซ้อนจำนวนของค่าสถานที่ไบนารีที่ใช้ในการระบุปัญหา (สิ่งที่ฉันเชื่อว่าเป็นเพียงเช่นเดียวกับ ) N ∗ l o g ( L )0 - …

1
ขอบเขตรันไทม์บนอัลกอริธึมของปัญหาที่สมบูรณ์ของปัญหาสมมติว่า P ≠ NP
สมมติP≠NPP≠NPP\neq NP P เราสามารถพูดอะไรได้บ้างเกี่ยวกับขอบเขตการทำงานของปัญหา NP-complete ทั้งหมด? นั่นคือฟังก์ชันที่รัดกุมที่สุดคือL,U:N→NL,U:N→NL,U:\mathbb{N}\to\mathbb{N}ซึ่งเราสามารถรับประกันได้ว่าอัลกอริธึมที่ดีที่สุดสำหรับปัญหา NP-Complete ใด ๆ ที่ทำงานในเวลาอย่างน้อยω(L(n))ω(L(n))\omega(L(n))และที่มากที่สุดo(U(n))o(U(n))o(U(n))ในอินพุทที่มีความยาวnnn ? เห็นได้ชัดว่า∀c:L(n)=Ω(nc)∀c:L(n)=Ω(nc)\forall c:L(n)=\Omega(n^c) ) นอกจากนี้U(n)=O(2nω(1))U(n)=O(2nω(1))U(n) = O(2^{n^{\omega(1)}}) ) หากปราศจากการสมมติว่าQP≠NPQP≠NPQP\neq NP , ETHETHETHหรือสมมติฐานอื่นใดที่ไม่ได้บอกเป็นนัยโดยP≠NPP≠NPP\neq NPเราสามารถให้ขอบเขตที่ดีกว่ากับL,UL,UL,Uหรือไม่? แก้ไข: โปรดทราบว่าอย่างน้อยหนึ่งL,UL,UL,Uจะต้องอยู่ห่างจากขอบเขตที่ฉันให้ที่นี่เนื่องจากเป็นปัญหา NPC ปัญหาเหล่านี้มีการลดเวลาโพลีระหว่างกันซึ่งหมายความว่าหากปัญหา NPC บางอย่างมีอัลกอริทึมที่เหมาะสมที่สุดของเวลาf(n)f(n)f(n)แล้วทุกปัญหามีขั้นตอนวิธี (ที่ดีที่สุดหรือไม่) ของรันไทม์O(f(nO(1)))O(f(nO(1)))O(f(n^{O(1)})) )

4
ความซับซ้อนของอัลกอริทึม Fibonacci แบบเรียกซ้ำ
การใช้อัลกอริทึม Fibonacci แบบเรียกซ้ำดังต่อไปนี้: def fib(n): if n==0: return 0 elif n==1 return 1 return (fib(n-1)+fib(n-2)) หากฉันป้อนหมายเลข 5 เพื่อค้นหาจุดอิ่มตัว (5) ฉันรู้ว่าสิ่งนี้จะส่งออก 5 แต่ฉันจะตรวจสอบความซับซ้อนของอัลกอริทึมนี้ได้อย่างไร ฉันจะคำนวณขั้นตอนที่เกี่ยวข้องได้อย่างไร

2
ความซับซ้อนของเวลาของการวนซ้ำสามชั้น
โปรดพิจารณาการวนซ้ำสามชั้นต่อไปนี้: for (int i = 1; i <= n; ++i) for (int j = i; j <= n; ++j) for (int k = j; k <= n; ++k) // statement คำสั่งที่นี่จะถูกดำเนินการอย่างแน่นอนn(n+1)(n+2)6n(n+1)(n+2)6n(n+1)(n+2)\over6ครั้ง ใครช่วยอธิบายหน่อยได้ไหมว่าสูตรนี้ได้มาอย่างไร ขอขอบคุณ.

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