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

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

2
ขั้นตอน "หาร" ในการเรียงแบบผสานสามารถหลีกเลี่ยงได้หรือไม่
การเรียงลำดับผสานจึงเป็นอัลกอริธึมการแบ่งและพิชิต ขณะที่ฉันดูแผนภาพข้างต้นฉันคิดว่าถ้าเป็นไปได้ที่จะข้ามขั้นตอนหารทั้งหมด หากคุณวนซ้ำอาร์เรย์เดิมในขณะที่กระโดดสองครั้งคุณจะได้รับองค์ประกอบที่ index i และ i + 1 และใส่เข้าไปในอาร์เรย์ที่เรียงลำดับของตัวเอง เมื่อคุณมีอาร์เรย์ย่อยทั้งหมดเหล่านี้ ([7,14], [3,12], [9,11] และ [2,6] ดังที่แสดงในแผนภาพ) คุณสามารถดำเนินการตามปกติตามปกติเพื่อรับ อาร์เรย์ที่เรียงลำดับ วนซ้ำผ่านอาร์เรย์และสร้างอาร์เรย์ย่อยที่จำเป็นในทันทีมีประสิทธิภาพน้อยกว่าการดำเนินการตามขั้นตอนหารอย่างครบถ้วนหรือไม่

1
การค้นหาลำดับของคำถามที่เหมาะสมที่สุดเพื่อลดเวลารวมของนักเรียน
สมมติว่ามีเซสชันการสอนที่มหาวิทยาลัย เรามีชุดของkkkคำถามQ={q1…qk}Q={q1…qk}Q = \{ q_1 \ldots q_k \}และการตั้งค่าของnnn นักเรียนS={s1…sn}S={s1…sn}S = \{ s_1 \ldots s_n \} } นักเรียนแต่ละคนมีข้อสงสัยในส่วนย่อยหนึ่งของคำถามคือสำหรับนักเรียนแต่ละคนsjsjs_jให้Qj⊆QQj⊆QQ_j \subseteq Qเป็นชุดของคำถามที่นักเรียนมีข้อสงสัยที่ สมมติว่า ∀1≤j≤n:Qj≠ϕ∀1≤j≤n:Qj≠ϕ\forall 1 \leq j \leq n: Q_j \neq \phiและ ⋃1≤j≤nQj=Q⋃1≤j≤nQj=Q\bigcup_{1\leq j\leq n}Q_j = Q Q นักเรียนทุกคนเข้าสู่เซสชั่นการสอนในจุดเริ่มต้น (ที่t=0t=0t = 0 ) ตอนนี้นักเรียนออกจากเซสชันการสอนทันทีที่คำถามทั้งหมดที่เขาสงสัยมีการพูดคุยกัน สมมติว่าเวลาที่จะหารือเกี่ยวกับคำถามแต่ละข้อมีค่าเท่ากับบอกว่า 1 หน่วย* ให้ทีเจเป็นเวลาที่ใช้โดยs Jในเซสชั่นกวดวิชา เราต้องการที่จะหาออกที่ดีที่สุดการเปลี่ยนแปลงσในการที่จะกล่าวถึงคำถาม ( Q σ …

7
วิธีการตรวจสอบว่าสองสายเป็นพีชคณิตของกันและกันโดยใช้พื้นที่เพิ่มเติม O (1)?
ให้สองสายคุณจะตรวจสอบได้อย่างไรว่าพวกมันเป็นการเปลี่ยนแปลงซึ่งกันและกันโดยใช้พื้นที่ O (1)? ไม่อนุญาตให้ดัดแปลงสตริงใด ๆ หมายเหตุ: พื้นที่ O (1) สัมพันธ์กับทั้งความยาวสตริงและขนาดของตัวอักษร

2
การเรียงลำดับพีชคณิตที่มีองค์ประกอบไม่ตรงกับดัชนี± M
ฉันเพิ่งถูกถามถึงปัญหานี้ในการสัมภาษณ์อัลกอริทึมและไม่สามารถแก้ไขได้ กำหนดสองค่า N และ M คุณต้องนับจำนวนพีชคณิตของความยาว N (โดยใช้ตัวเลขตั้งแต่ 1 ถึง N) ซึ่งความแตกต่างที่แน่นอนระหว่างตัวเลขใด ๆ ในการเปลี่ยนแปลงและตำแหน่งในการเปลี่ยนแปลงไม่เท่ากับ M ตัวอย่าง - ถ้า N = 3 และ M = 1 ดังนั้น 1 2 3 และ 3 2 1 คือการเรียงสับเปลี่ยนที่ถูกต้อง แต่ 1 3 2 ไม่ถูกต้องเนื่องจากหมายเลข 3 อยู่ที่ตำแหน่ง 2 และความแตกต่างคือ = M ฉันลองใช้การเขียนโปรแกรม NxM Dynamic แต่ไม่สามารถเกิดซ้ำได้ซึ่งไม่นับการทำซ้ำ

1
นี่เป็นวิธีทั่วไปในการแปลงกระบวนงานแบบเรียกซ้ำใด ๆ ไปเป็นการเรียกซ้ำแบบหางหรือไม่?
ดูเหมือนว่าฉันได้พบวิธีทั่วไปในการแปลงขั้นตอนการเรียกซ้ำใด ๆ เป็นการเรียกซ้ำแบบหาง: กำหนดกระบวนการย่อยผู้ช่วยด้วยพารามิเตอร์ "ผลลัพธ์" พิเศษ ใช้สิ่งที่จะนำไปใช้กับค่าส่งคืนของโพรซีเดอร์กับพารามิเตอร์นั้น เรียกขั้นตอนผู้ช่วยนี้เพื่อเริ่มต้น ค่าเริ่มต้นสำหรับพารามิเตอร์ "result" คือค่าสำหรับจุดออกของกระบวนการซ้ำเพื่อให้กระบวนการวนซ้ำผลลัพธ์เริ่มต้นจากจุดที่กระบวนการวนซ้ำเริ่มหดตัว ตัวอย่างเช่นต่อไปนี้เป็นขั้นตอนการเรียกซ้ำแบบดั้งเดิมที่จะทำการแปลง ( SICP แบบฝึกหัด 1.17 ): (define (fast-multiply a b) (define (double num) (* num 2)) (define (half num) (/ num 2)) (cond ((= b 0) 0) ((even? b) (double (fast-multiply a (half b)))) (else (+ (fast-multiply a (- …

3
หน่วยความจำΘ (1) หมายถึงอะไร
ฉันมีคำจำกัดความของอัลกอริทึมแบบ in-situ จากอาจารย์ แต่ฉันไม่เข้าใจ อัลกอริธึมในแหล่งกำเนิดอ้างถึงอัลกอริธึมที่ทำงานกับหน่วยความจำΘ (1) นั่นหมายความว่าอย่างไร?

1
ถ้าไม่ใช่พหุนามหรือเลขชี้กำลังแล้วฟังก์ชันนี้เรียกว่าอะไร?
ฉันเพิ่งพบประโยคนี้ในหน้า 6 ของ Garey และ Johnson "คอมพิวเตอร์และการใช้งานไม่ได้" ขั้นตอนวิธีการใด ๆ ที่มีเวลาซับซ้อนฟังก์ชั่นไม่สามารถกระโดดดังนั้นจะเรียกว่าอัลกอริทึมเวลาชี้แจง (แม้ว่ามันควรจะตั้งข้อสังเกตว่าคำนิยามนี้รวมถึงเวลาที่ไม่ใช่พหุนามฟังก์ชั่นความซับซ้อนบางอย่างเช่นซึ่งไม่ได้รับการยกย่องว่าเป็นปกติชี้แจง ฟังก์ชั่น).nlognnlog⁡nn^{\log n} คำถามของฉันดังต่อไปนี้ ถ้าไม่ใช่พหุนามและเลขชี้กำลังแล้วฟังก์ชันนี้เรียกว่าอะไร? สิ่งนี้มีชื่อหรือกรณีพิเศษหรือไม่?nlognnlog⁡nn^{\log n} ขอขอบคุณ.

2
คำอธิบายแบบเลย์สำหรับการค้นหาแบบสากลคืออะไร
ฉันกำลังอ่านหนังสือในหัวข้อวิทยาศาสตร์คอมพิวเตอร์ แต่ขาดพื้นฐานที่จำเป็นบางประการ โดยปกติเมื่อฉันพบเจอคำศัพท์ที่ฉันไม่เข้าใจฉันแค่ค้นหามัน แต่สำหรับUniversal Searchฉันก็ไม่สามารถหาคำอธิบายที่เหมาะสมสำหรับผู้อ่านที่ไม่มีพื้นฐานด้านสถิติ / วิทยาศาสตร์คอมพิวเตอร์ ฉันได้อ่านบทความนี้เกี่ยวกับการค้นหาทั่วไปจาก Scholarpediaซึ่งดูเหมือนจะครอบคลุมหัวข้อ ฉันขอขอบคุณคำอธิบายความหมายของการค้นหาทั่วไป (หรือการค้นหาเลวิน )

2
อัลกอริทึมที่มีประสิทธิภาพในการสร้างการกระจายสองแบบเรียงสับเปลี่ยนของชุดมัลติเซ็ตที่สุ่ม
พื้นหลัง \newcommand\ms[1]{\mathsf #1}\def\msD{\ms D}\def\msS{\ms S}\def\mfS{\mathfrak S}\newcommand\mfm[1]{#1}\def\po{\color{#f63}{\mfm{1}}}\def\pc{\color{#6c0}{\mfm{c}}}\def\pt{\color{#08d}{\mfm{2}}}\def\pth{\color{#6c0}{\mfm{3}}}\def\pf{4}\def\pv{\color{#999}5}\def\gr{\color{#ccc}}\let\ss\grสมมติว่าฉันมีสองสำหรับกระบวนการที่เหมือนกันของnnnหินอ่อน แต่ละหินอ่อนสามารถเป็นหนึ่งในcccสีที่c≤nc≤nc≤nc≤nให้ninin_iแทนจำนวนหินอ่อนสีiiiในแต่ละชุด ให้SS\msSเป็นมัลติเซ็ต{1,…,1n1,2,…,2n2,…,1c,…,cnc}{1,…,1⏞n1,2,…,2⏞n2,…,1c,…,c⏞nc}\small\{\overbrace{\po,…,\po}^{n_1},\;\overbrace{\pt,…,\pt}^{n_2},\;…,\;\overbrace{\vphantom 1\pc,…,\pc}^{n_c}\}แทนหนึ่งชุด ในการเป็นตัวแทนความถี่ , SS\msSนอกจากนี้ยังสามารถเขียนเป็น(1n12n2…cnc)(1n12n2…cnc)(\po^{n_1} \;\pt^{n_2}\; … \;\pc^{n_c}){n_c}) จำนวนการเรียงสับเปลี่ยนที่แตกต่างกันของSS\msSนั้นมอบโดยMultinomial : |SS|=(nn1,n2,…,nc)=n!n1!n2!⋯nc!=n!∏i=1c1ni!.|SS|=(nn1,n2,…,nc)=n!n1!n2!⋯nc!=n!∏i=1c1ni!.\left|\mfS_{\msS}\right|=\binom{n}{n_1,n_2,\dots,n_c}=\frac{n!}{n_1!\,n_2!\cdots n_c!}=n! \prod_{i=1}^c \frac1{n_i!}. คำถาม มีอัลกอริทึมที่มีประสิทธิภาพในการสร้างการกระจายสองแบบเรียงสับเปลี่ยนPPPและQQQของSS\msSที่สุ่มหรือไม่ (การกระจายควรเป็นแบบเดียวกัน) เปลี่ยนแปลงPPPคือกระจายถ้าองค์ประกอบที่แตกต่างกันทุกiiiของPPPกรณีของiiiมีระยะห่างออกไปประมาณเท่า ๆ กันในPPPP ตัวอย่างเช่นสมมติว่าS=(1424)={1,1,1,1,2,2,2,2}S=(1424)={1,1,1,1,2,2,2,2}\msS=(\po^4\;\pt^4)=\{\po,\po,\po,\po,\pt,\pt,\pt,\pt\}\} {1,1,1,2,2,2,2,1}{1,1,1,2,2,2,2,1}\{\po, \po, \po, \pt, \pt, \pt, \pt, \po\}ไม่กระจาย {1,2,1,2,1,2,1,2}{1,2,1,2,1,2,1,2}\{\po, \pt, \po, \pt, \po, \pt, \po, \pt\}กระจาย อย่างจริงจังมากขึ้น: หากมีเพียงหนึ่งตัวอย่างของไป“พื้นที่ออก” ในเพื่อให้ 0ni=1ni=1n_i=1iiiPPPΔ(i)=0Δ(i)=0\Delta(i)=0 มิฉะนั้นให้เป็นระยะห่างระหว่างอินสแตนซ์ และอินสแตนซ์ …

1
เหตุใดอัลกอริธึมการคูณเชิงเส้นเชิงเวลาของ Knuth จึงไม่“ นับ”
หน้าวิกิพีเดียในขั้นตอนวิธีการคูณกล่าวหนึ่งที่น่าสนใจโดยโดนัลด์ Knuth โดยพื้นฐานแล้วมันเกี่ยวข้องกับการรวมการคูณการแปลงฟูริเยร์กับตารางที่คำนวณล่วงหน้าของการคูณขนาดลอการิทึม มันทำงานในเวลาเชิงเส้น บทความทำหน้าที่เหมือนอัลกอริทึมนี้ แต่อย่างใดไม่นับเป็นอัลกอริทึมการคูณ "จริง" ที่สำคัญกว่านั้นก็ถือว่าเป็นคำถามเปิดว่าการคูณสามารถทำได้ในO(n lg n)เวลา! รายละเอียดของอัลกอริทึมนี้ตัดสิทธิ์จากการนับเป็นอัลกอริทึมการคูณ "จริง" หรือไม่ การเดาของฉันคือ: การคำนวณล่วงหน้าของตารางใช้เวลามากกว่าเชิงเส้น ในทางกลับกันก็สามารถทำได้ในn lg nเวลาเพื่อที่จะยังคงน่าประทับใจ การเข้าถึงแบบสุ่มไม่ได้รับอนุญาต แต่ทำไมอัลกอริธึมอื่น ๆ สามารถใช้สิ่งต่าง ๆ เช่นตารางแฮชและพอยน์เตอร์ได้ มันจะปรับขนาดผิดเมื่อคุณเพิ่มขนาดคำของเครื่องเช่นถ้าคุณมีเครื่อง 256 บิตที่ทำหน้าที่ 256 บิตในการเรียนการสอนเพียงครั้งเดียวดังนั้นจึงไม่มีทางชี้ไปที่อัลกอริทึมนี้จนกว่าคุณจะมีองค์ประกอบมากกว่า 2 ^ 256 ในทางกลับกันเรากังวลกับปัจจัยผกผัน - ackermann ในการค้นหาสหภาพ "มีอัลกอริทึมการคูณเวลาเชิงเส้นหรือไม่" คำถามนั้นเป็นความลับในแง่ของเครื่องจักรที่อ่อนแอกว่า แต่มีเพียงนัยที่

1
ฉันจะค้นหาการเป็นตัวแทนที่สั้นที่สุดสำหรับเซตย่อยของ powerset ได้อย่างไร
ฉันกำลังมองหาอัลกอริทึมที่มีประสิทธิภาพสำหรับปัญหาต่อไปนี้หรือพิสูจน์ความแข็งของ NP Letเป็นชุดและชุดย่อยของ\ค้นหาลำดับมีความยาวน้อยที่สุดสำหรับแต่ละจะมีเช่นนั้นLΣΣ\SigmaA⊆P(Σ)A⊆P(Σ)A\subseteq\mathcal{P}(\Sigma)ΣΣ\Sigmaw∈Σ∗w∈Σ∗w\in \Sigma^*L∈AL∈AL\in Ak∈Nk∈Nk\in\mathbb{N}{wk+i∣0≤i&lt;|L|}=L{wk+i∣0≤i&lt;|L|}=L\{ w_{k+i} \mid 0\leq i < |L| \} = L ตัวอย่างเช่นสำหรับคำว่าเป็นวิธีแก้ปัญหาเนื่องจากสำหรับมีสำหรับมี 1w = b a c { a , b } k = 0 { a , c } k = 1A={{a,b},{a,c}}A={{a,b},{a,c}}A = \{\{a,b\},\{a,c\}\}w=bacw=bacw = bac{a,b}{a,b}\{a,b\}k=0k=0k=0{a,c}{a,c}\{a,c\}k=1k=1k=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 แต่ฉันจะตรวจสอบความซับซ้อนของอัลกอริทึมนี้ได้อย่างไร ฉันจะคำนวณขั้นตอนที่เกี่ยวข้องได้อย่างไร

1
การค้นหาการแยกตัวประกอบสูงสุดของภาษาปกติ
Let ภาษาL⊆Σ∗L⊆Σ∗\mathcal{L} \subseteq \Sigma^*เป็นปกติ การแยกตัวประกอบของLL\mathcal{L}เป็นคู่สูงสุด(X,Y)(X,Y)(X,Y)ของชุดคำด้วย X⋅Y⊆LX⋅Y⊆LX \cdot Y \subseteq \mathcal{L} X≠∅≠YX≠∅≠YX \neq \emptyset \neq Y , โดยที่X⋅Y={xyX⋅Y={xyX \cdot Y = \{xy | x∈X,y∈Y}x∈X,y∈Y}x \in X, y \in Y\} } (X,Y)(X,Y)(X,Y)(X′,Y′)≠(X,Y)(X′,Y′)≠(X,Y)(X',Y') \neq (X,Y)X′⋅Y′⊆LX′⋅Y′⊆LX'\cdot Y' \subseteq \mathcal{L} Y ⊈ Y ′X⊈X′X⊈X′X \not \subseteq X'Y⊈Y′Y⊈Y′Y \not \subseteq Y' มีขั้นตอนง่าย ๆ ในการค้นหาว่าคู่ใดมีค่าสูงสุด? ตัวอย่าง: Let …

1
ใช้จำนวนการแลกเปลี่ยนขั้นต่ำเพื่อให้แต่ละถังขยะมีลูกบอลที่มีสีเดียวกัน
มีถังขยะที่ฉัน bin TH ประกอบด้วยฉันลูก ลูกได้nสีมีฉันลูกที่มีสีผม Let เมตร= Σ n ฉัน= 1ฉันnnnผมiiaผมaia_innnaผมaia_iผมiim = ∑ni = 1aผมm=∑i=1naim=\sum_{i=1}^n a_i การสลับจะใช้ลูกบอลจากหนึ่งช่องและสลับกับลูกบอลจากอีกช่องหนึ่ง เราต้องการจำนวน swaps ขั้นต่ำที่แต่ละ bin มีเพียงลูกที่มีสีเดียวกัน ฉันรู้ว่ากรณีพิเศษง่ายฉัน ≤ 2สำหรับฉัน (ถ้าฉัน = 2สำหรับฉันแล้วคุณยังสามารถทำมันได้โดยการเปลี่ยนแต่ละลูกที่มากที่สุดครั้งหนึ่ง.)aผม≤ 2ai≤2a_i\leq 2ผมiiaผม= 2ai=2a_i=2ผมii แก้ไข : สิ่งนี้ผิดเพราะการค้นหานั้นยากมากc ( D )c(D)c(D) ถ้าเรารู้ว่าสีใดไปที่ถังขยะปัญหานั้นง่าย พิจารณาหลายเดี่ยว , V = { โวลต์1 , ... , V n } …

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

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