วิทยาศาสตร์คอมพิวเตอร์

ถาม - ตอบสำหรับนักเรียนนักวิจัยและผู้ปฏิบัติงานด้านวิทยาการคอมพิวเตอร์

1
ปัญหาที่อัลกอริทึมที่ยึดตามการปรับแต่งพาร์ติชันทำงานเร็วกว่าในเวลาบันทึก
การปรับแต่งพาร์ติชันเป็นเทคนิคที่คุณเริ่มต้นด้วยชุด จำกัด ของวัตถุและแบ่งชุดอย่างต่อเนื่อง ปัญหาบางอย่างเช่นการย่อขนาด DFA สามารถแก้ไขได้โดยใช้การปรับแต่งพาร์ติชันอย่างมีประสิทธิภาพ ฉันไม่ทราบปัญหาอื่น ๆ ที่มักแก้ไขได้โดยใช้การปรับแต่งพาร์ติชันที่นอกเหนือจากที่ระบุไว้ในหน้า Wikipedia จากปัญหาเหล่านี้ทั้งหมดหน้า Wikipedia กล่าวถึงสองขั้นตอนวิธีซึ่งใช้การปรับแต่งพาร์ติชันในเวลาเชิงเส้น มีการจัดเรียงทอพอโลยีแบบเรียงลำดับตามคำศัพท์ [1] และอัลกอริธึมสำหรับการค้นหาพจนานุกรมแบบกว้างคำแรก [2] มีตัวอย่างอื่น ๆ หรือการอ้างอิงถึงปัญหาที่สามารถแก้ไขได้โดยใช้การปรับแต่งพาร์ทิชันอย่างมีประสิทธิภาพมากหมายถึงสิ่งที่ดีกว่า loglinear ในแง่ของเวลา? [1] Sethi, Ravi, "กราฟการกำหนดเวลาในโปรเซสเซอร์สองตัว", SIAM Journal on Computing 5 (1): 73–82, 1976 [2] Rose, DJ, Tarjan, RE, Lueker, GS, "อัลกอริทึมของการกำจัดจุดยอดบนกราฟ", SIAM Journal on Computing 5 (2): 266–283, 1976

1
พิสูจน์อย่างเข้มงวดเพื่อความถูกต้องของสมมติฐาน
ทฤษฎีบท Master เป็นเครื่องมือที่สวยงามสำหรับการแก้บางชนิดของการกลับเป็นซ้ำ อย่างไรก็ตามเรามักจะปัดส่วนที่สำคัญเมื่อนำไปใช้ ตัวอย่างเช่นระหว่างการวิเคราะห์ของการควบรวมกิจการเราไปอย่างมีความสุข T(n)=T(⌊n2⌋)+T(⌈n2⌉)+f(n)T(n)=T(⌊n2⌋)+T(⌈n2⌉)+f(n)\qquad T(n) = T\left(\left\lfloor \frac{n}{2} \right\rfloor\right) + T\left(\left\lceil \frac{n}{2} \right\rceil\right) + f(n) ถึง T′(n)=2T′(n2)+f(n)T′(n)=2T′(n2)+f(n)\qquad T'(n) = 2 T'\left(\frac{n}{2}\right) + f(n) พิจารณาเพียง k เรามั่นใจ ourselved ว่าขั้นตอนนี้เป็นที่ถูกต้อง - นั่นคือT ∈ Θ ( T ' ) - เพราะTพฤติกรรม "อย่าง" โดยทั่วไปเราถือว่าn = b kสำหรับbตัวส่วนร่วมn=2kn=2kn=2^kT∈Θ(T′)T∈Θ(T′)T \in \Theta(T')TTTn=bkn=bkn=b^kbbb มันเป็นเรื่องง่ายที่จะสร้างซ้ำซึ่งไม่อนุญาตให้มีความเรียบง่ายนี้โดยการใช้หินฉตัวอย่างเช่นการเกิดซ้ำข้างต้นสำหรับTfffTTT\,/ด้วยT′T′\,T' f(n)={1n,n=2k,elsef(n)={1,n=2kn,else\qquad f(n) …

3
จะพิสูจน์ได้อย่างไรว่า DFA จาก NFA สามารถมีจำนวนรัฐเป็นเลขชี้กำลัง
ออโต้ จำกัด ที่ไม่สามารถกำหนดได้ทั้งหมดสามารถเปลี่ยนเป็นออโต้ จำกัด อัน จำกัด ที่เทียบเท่าได้ อย่างไรก็ตามออโต้ จำกัด ที่กำหนดขึ้นได้นั้นอนุญาตให้ลูกศรเดียวต่อสัญลักษณ์ที่ชี้จากรัฐเท่านั้น ดังนั้นรัฐควรเป็นสมาชิกของชุดพลังแห่งรัฐของ NFA สิ่งนี้ดูเหมือนจะบ่งชี้ว่าจำนวนสถานะของ DFA สามารถปรับขยายชี้แจงในแง่ของจำนวนสถานะของ NFA อย่างไรก็ตามฉันสงสัยว่าจะพิสูจน์สิ่งนี้ได้อย่างไร

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

5
จะตรวจพบได้อย่างไรว่าตัวสร้างตัวเลขนั้นไม่ได้สุ่มอย่างแท้จริง?
ฉันได้ยินมาว่าการสร้างตัวเลขสุ่มในคอมพิวเตอร์นั้นไม่ได้สุ่มจริงๆ แต่ไม่มีวิธีที่มีประสิทธิภาพในการตรวจจับ จะตรวจจับได้อย่างไร?

3
การหาลอการิทึมไม่ต่อเนื่องนั้นยากเพียงใด
สิ้นเชิงลอการิทึมเป็นเช่นเดียวกับการหาbbbในข = คmodให้, CและNab=cmodNab=cmodNa^b=c \bmod NaaacccNNN ฉันสงสัยว่ากลุ่มความซับซ้อนใด (เช่นสำหรับคอมพิวเตอร์แบบคลาสสิคและแบบควอนตัม) ที่อยู่ในนี้และวิธีการใด (เช่นอัลกอริธึม) ที่ดีที่สุดสำหรับการทำงานนี้ให้สำเร็จ ลิงค์วิกิพีเดียด้านบนไม่ได้ให้เวลาที่แน่นอนมาก ฉันหวังว่าจะมีวิธีการที่ดีที่สุดที่เป็นที่รู้จักกันดีในการค้นหาสิ่งนั้น

2
การเปลี่ยนแปลงตัวแปรในความสัมพันธ์ที่เกิดซ้ำ
ขณะนี้ฉันกำลังเรียนรู้ด้วยตัวเอง Intro to Algorithms (CLRS) และมีวิธีการหนึ่งที่พวกเขาร่างในหนังสือเพื่อแก้ปัญหาความสัมพันธ์ที่เกิดซ้ำ วิธีการต่อไปนี้สามารถอธิบายได้ด้วยตัวอย่างนี้ สมมติว่าเรามีการเกิดซ้ำ T( n ) = 2 T( n--√) + บันทึกnT(n)=2T(n)+log⁡nT(n) = 2T(\sqrt n) + \log n เริ่มแรกพวกเขาทำการทดแทน m = lg (n) แล้วเสียบกลับเข้าไปที่การเกิดซ้ำและรับ: T( 2)ม.) = 2 T( 2)ม.2) + mT(2m)=2T(2m2)+mT(2^m) = 2T(2^{\frac{m}{2}}) + m เมื่อมาถึงจุดนี้ฉันเข้าใจอย่างสมบูรณ์ ขั้นตอนต่อไปนี้เป็นขั้นตอนที่ทำให้ฉันสับสน ตอนนี้พวกเขา "เปลี่ยนชื่อ" การเกิดซ้ำและปล่อยให้S ( m ) = …

6
ความแตกต่างระหว่างภาษาสคริปต์และภาษาโปรแกรมปกติคืออะไร
ภาษาการเขียนโปรแกรมและภาษาสคริปต์แตกต่างกันอย่างไร ตัวอย่างเช่นพิจารณา C กับ Perl ความแตกต่างเพียงอย่างเดียวที่ภาษาสคริปต์ต้องการเพียงล่ามและไม่ต้องการการรวบรวมและการลิงก์?

1
การแก้หารและพิชิต reccurences หากการแบ่งอัตราส่วนขึ้นอยู่กับ
มีวิธีการทั่วไปในการแก้ปัญหาการเกิดซ้ำของแบบฟอร์มหรือไม่: T(n)=T(n−nc)+T(nc)+f(n)T(n)=T(n−nc)+T(nc)+f(n)T(n) = T(n-n^c) + T(n^c) + f(n) สำหรับหรือมากกว่าโดยทั่วไปc&lt;1c&lt;1c < 1 T(n)=T(n−g(n))+T(r(n))+f(n)T(n)=T(n−g(n))+T(r(n))+f(n)T(n) = T(n-g(n)) + T(r(n)) + f(n) ที่g(n),r(n)g(n),r(n)g(n),r(n)มีบางฟังก์ชั่นย่อยเชิงเส้นของnnnn ปรับปรุง : ฉันได้ผ่านการเชื่อมโยงที่ให้ไว้ด้านล่างและร่อนผ่านทั้งหมดนอกจากนี้ยังมีความสัมพันธ์ที่เกิดขึ้นอีกในบันทึกเจฟฟ์เอริก รูปแบบของการเกิดซ้ำนี้ไม่ได้กล่าวถึงทุกที่ วิธี Akkra-Bazi ใช้เฉพาะเมื่อการแบ่งเป็นเศษส่วน การอ้างอิงที่รุนแรงใด ๆ จะถูกตรวจสอบ

3
แทรกบทแทรกสำหรับภาษาปกติที่ จำกัด ง่าย
Wikipediaมีคำจำกัดความของบทแทรกต่อไปนี้สำหรับ langauges ปกติ ... ให้เป็นภาษาปกติ จากนั้นจะมีจำนวนเต็ม ≥ 1 ขึ้นอยู่กับเช่นว่าทุกสตริงในของความยาวอย่างน้อย (เรียกว่า "pumping length") สามารถเขียนเป็น = (เช่นสามารถแบ่งออกเป็นสาม วัสดุพิมพ์) ที่สอดคล้องกับเงื่อนไขต่อไปนี้:LLLpppLLLwwwLLLppppppwwwxyzxyzxyzwww | | ≥ 1yyy | | ≤xyxyxyppp สำหรับทั้งหมด ≥ 0, ∈iiixyizxyizxy^izLLL ฉันไม่เห็นว่าสิ่งนี้น่าพึงพอใจสำหรับภาษาปกติที่ จำกัด อย่างง่าย ถ้าผมมีตัวอักษรของ { } และการแสดงออกปกติแล้วประกอบด้วยแค่คำหนึ่งซึ่งเป็นตามด้วยขตอนนี้ฉันต้องการที่จะดูว่าภาษาปกติของฉันเป็นไปตามที่สูบ ...a,ba,ba,babababLLLaaabbb ในฐานะที่เป็นซ้ำไม่มีอะไรในการแสดงออกปกติของฉันค่าของyyyต้องมีที่ว่างเปล่าเพื่อให้สภาพ 3 satisifed สำหรับฉันiiiแต่ถ้าเป็นเช่นนั้นมันล้มเหลวในเงื่อนไข 1 ซึ่งบอกว่าyyyจะต้องมีความยาวอย่างน้อย 1 ตัว! ถ้าฉันปล่อยให้yyyเป็นaaa , bbbหรือabababมันจะเป็นไปตามเงื่อนไขที่ 1 แต่ล้มเหลวในสภาพที่ 3 …

4
จะใช้อัลกอริทึมแบบโลภเพื่อค้นหาลำดับที่ไม่ลดลงใกล้เคียงกับลำดับที่ได้อย่างไร
a1,…,ana1,…,ana_1, \ldots, a_n000lllaiaia_ibibib_i000lllbibib_iสูงสุด( | a1- ข1| ,…, | n- ขn| )max(|a1−b1|,…,|an−bn|)\max(|a_1-b_1|, \ldots, |a_n-b_n|)ขผมbib_iO ( n l√4)O(nl4)O(n\sqrt[4]{l}) ฉันไม่มีเงื่อนงำอย่างจริงใจว่าจะเริ่มแก้ไขคำถามนี้อย่างไร ดูเหมือนว่าฉันจะถามคำถามเกี่ยวกับการเขียนโปรแกรมแบบไดนามิก แต่อาจารย์บอกว่าควรแก้ไขได้โดยใช้อัลกอริทึมโลภ มันคงจะดีมากถ้ามีคนชี้ให้ฉันไปในทิศทางที่ถูกต้องด้วยการบอกใบ้เล็ก ๆ

2
วิธีลดขนาดความซับซ้อนแบบขนานส่งผลให้มีหลายคอร์อย่างต่อเนื่อง
ฉันมีปัญหาในการยอมรับมุมมองเชิงทฤษฎีที่ซับซ้อนของ "การแก้ไขอย่างมีประสิทธิภาพโดยอัลกอริทึมแบบขนาน" ซึ่งให้โดยNCระดับ: NC เป็นชั้นของปัญหาที่สามารถแก้ไขได้โดยขั้นตอนวิธีการแบบคู่ขนานในเวลาบนประมวลผลด้วย{N}p ( n ) ∈ O ( n k ) c , k ∈ NO ( บันทึกคn )O(logc⁡n)O(\log^cn)p ( n ) ∈ O ( nk)p(n)∈O(nk)p(n) \in O(n^k)c,k∈Nc,k∈Nc,k \in \mathbb{N} เราสามารถสมมติรถเข็น ปัญหาของฉันคือสิ่งนี้ดูเหมือนจะไม่ค่อยพูดเกี่ยวกับเครื่องจักร "ของจริง" นั่นคือเครื่องจักรที่มีตัวประมวลผลจำนวน จำกัด ตอนนี้ฉันได้รับการบอกแล้วว่า "เป็นที่รู้กันดีว่า" เราสามารถ "มีประสิทธิภาพ" จำลองอัลกอริทึมของตัวประมวลผลบนตัวประมวลผลp ∈ NO(nk)O(nk)O(n^k)p∈Np∈Np \in \mathbb{N} "ประสิทธิภาพ" หมายถึงอะไรที่นี่ ชาวบ้านนี้หรือมีทฤษฎีบทที่เข้มงวดซึ่งคำนวณปริมาณค่าใช้จ่ายที่เกิดจากการจำลอง? …

3
ปัญหาใน P ด้วยอัลกอริทึมแบบสุ่มที่พิสูจน์ได้เร็วขึ้น
มีปัญหาใด ๆ ในPP\mathsf{P}ที่มีอัลกอริทึมแบบสุ่มที่เต้นต่ำกว่าขอบเขตของอัลกอริทึมที่กำหนดหรือไม่? ยิ่งขึ้นอย่างเป็นรูปธรรมเรารู้จักใดที่ ? ที่นี่\ mathsf {PTIME} (f (n))หมายถึงชุดภาษาที่ decidable โดย TM แบบสุ่มที่มีข้อผิดพลาดแบบ จำกัด ขอบเขต (หนึ่งหรือสองด้าน) ในขั้นตอนf (n)kkkDTIME(nk)⊊PTIME(nk)DTIME(nk)⊊PTIME(nk)\mathsf{DTIME}(n^k) \subsetneq \mathsf{PTIME}(n^k)PTIME(f(n))PTIME(f(n))\mathsf{PTIME}(f(n))f(n)f(n)f(n) การสุ่มซื้อของเราไว้ในPP\mathsf{P}หรือไม่? เพื่อความชัดเจนฉันกำลังมองหาบางสิ่งที่แตกต่างคือแบบอะซิมโทติค (พหุนามโดยเฉพาะอย่างยิ่ง แต่ฉันจะเลือกโพลีโลมาติกแบบไมโคร) ไม่ใช่แค่ค่าคงที่ ฉันกำลังมองหาอัลกอริทึมแบบไม่มีอาการในกรณีที่แย่ที่สุด อัลกอริทึมที่มีความซับซ้อนที่คาดหวังดีกว่าไม่ใช่สิ่งที่ฉันกำลังมองหา ฉันหมายถึงอัลกอริทึมแบบสุ่มเช่นเดียวกับใน RP หรือ BPP ไม่ใช่ ZPP

2
วิธีการคิดขั้นตอนวิธีการจัดเรียงหน้าต่าง (ปรับขนาดได้) บนหน้าจอเพื่อให้ครอบคลุมพื้นที่มากที่สุด
ฉันต้องการเขียนโปรแกรมง่าย ๆ ที่ยอมรับชุดของ windows (ความกว้าง + ความสูง) และความละเอียดหน้าจอและแสดงผลการจัดเรียงของหน้าต่างเหล่านั้นบนหน้าจอเพื่อให้ windows ใช้พื้นที่มากที่สุด ดังนั้นจึงเป็นไปได้ที่จะปรับขนาดหน้าต่างในขณะที่รักษา output size &gt;= initial sizeและอัตราส่วนกว้างยาว ดังนั้นสำหรับหน้าต่างฉันต้องการขั้นตอนวิธีการที่จะกลับขอบเขตของความกว้างความสูง)( x , y , w ฉันd t h , h e ฉันg h t )ผมii( x , y, W ฉันdt h , h e i gh t )(x,y,width,height)(x, y, width, height) ฉันเชื่อว่านี่อาจเป็นรูปแบบของเครื่องเป้ 2D …

2
จะอธิบายอัลกอริทึมพิสูจน์และวิเคราะห์ได้อย่างไร
ก่อนอ่านศิลปะการเขียนโปรแกรมคอมพิวเตอร์ (TAOCP)ฉันไม่ได้พิจารณาคำถามเหล่านี้อย่างลึกซึ้ง ฉันจะใช้รหัสเทียมเพื่ออธิบายอัลกอริทึมเข้าใจพวกเขาและประเมินเวลาทำงานเฉพาะเกี่ยวกับคำสั่งของการเติบโต TAOCPอย่างทั่วถึงการเปลี่ยนแปลงความคิดของฉัน TAOCPใช้ภาษาอังกฤษผสมกับขั้นตอนและข้ามไปเพื่ออธิบายอัลกอริทึมและใช้แผนภูมิการไหลเพื่อให้เห็นอัลกอริธึมได้ง่ายขึ้น ดูเหมือนว่าจะอยู่ในระดับต่ำ แต่ฉันพบว่ามีข้อได้เปรียบบางอย่างโดยเฉพาะอย่างยิ่งกับแผนภูมิการไหลซึ่งฉันไม่สนใจมาก เราสามารถติดฉลากลูกศรแต่ละอันด้วยการยืนยันเกี่ยวกับสถานะปัจจุบันของกิจการในเวลาที่การคำนวณสำรวจลูกศรนั้นและทำการพิสูจน์อุปนัยสำหรับอัลกอริทึม ผู้เขียนพูดว่า: มันเป็นความขัดแย้งของผู้เขียนที่เราเข้าใจจริง ๆ ว่าทำไมอัลกอริธึมจึงถูกต้องเฉพาะเมื่อเราไปถึงจุดที่ความคิดของเราเติมเต็มโดยนัยในการยืนยันทั้งหมดตามที่ทำในรูปที่ 4 ฉันไม่เคยเจอเรื่องแบบนี้เลย ข้อดีอีกอย่างคือเราสามารถนับจำนวนครั้งที่ดำเนินการแต่ละขั้นตอน ง่ายต่อการตรวจสอบกับกฎข้อแรกของ Kirchhoff ฉันไม่ได้วิเคราะห์เวลาทำงานอย่างแน่นอนดังนั้นบางส่วนอาจถูกตัดออกเมื่อฉันประเมินเวลาทำงาน± 1±1\pm1 การวิเคราะห์คำสั่งของการเติบโตบางครั้งก็ไร้ประโยชน์ ตัวอย่างเช่นเราไม่สามารถแยกแยะ quicksort จาก heapsort ได้เนื่องจากทั้งหมดคือโดยที่คือจำนวนสุ่มตัวแปรคาดหวังดังนั้นเราควรวิเคราะห์ค่าคงที่พูดและE (T_2 (n)) = A_2 \ lg n + B_2n + O (\ log n)ดังนั้นเราสามารถเปรียบเทียบT_1และT_2ดีกว่า และบางครั้งเราควรเปรียบเทียบปริมาณอื่น ๆ เช่นความแปรปรวน การวิเคราะห์คำสั่งซื้อของการเจริญเติบโตของเวลาทำงานเท่านั้นไม่เพียงพอ ในฐานะที่เป็นTAOCPE X X E ( T 1 …

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