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

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

2
การใช้งานโครงสร้างข้อมูลแบบไม่คงที่ (ถาวร) เหมือนอาร์เรย์ที่มีการจัดทำดัชนีอย่างรวดเร็วผนวกผนวกซ้ำ
ฉันกำลังมองหาโครงสร้างข้อมูลถาวรคล้ายกับอาเรย์ (แต่ไม่เปลี่ยนรูป) ให้การดำเนินการจัดทำดัชนีอย่างรวดเร็วผนวกต่อเติมและทำซ้ำ (ตำแหน่งที่ดี) Clojure ให้ Vector แบบถาวร แต่มันเป็นเพียงการผนวกที่รวดเร็วเท่านั้น เวกเตอร์ของ Scala มีการเพิ่มและต่อเติมอย่างต่อเนื่องอย่างมีประสิทธิภาพ แต่ฉันไม่สามารถนำมาใช้ได้เนื่องจากมันขึ้นอยู่กับโครงสร้างข้อมูลเดียวกัน (bit-mapped vector trie) เป็นเวกเตอร์ Clojure และอย่างที่ฉันเข้าใจ trie เวกเตอร์บิตแมป ไม่สามารถเพิ่มความเร็วได้อย่างรวดเร็วหากไม่มีเทคนิคบางอย่าง ฉันสนใจที่จะไม่พร้อมใช้งานการใช้งาน แต่ในรายละเอียดของวิธีการใช้โครงสร้างข้อมูลดังกล่าวด้วยตนเอง

3
หนังสือเบื้องต้นเกี่ยวกับลอจิกและการคำนวณ
คุณสามารถให้คำแนะนำบางอย่างเกี่ยวกับหนังสือแนะนำเบื้องต้น (แต่ครอบคลุม) เกี่ยวกับตรรกะและการคำนวณได้ไหม บางหัวข้อคลุมเครือที่ฉันมีอยู่ในใจคือ: Presburger artihm., PA, ZF, ZFC, HOL ทฤษฎีเซต, ทฤษฎีประเภท การคำนวณแบบจำลอง (เครื่องจักรทัวริง) ในทฤษฎีต่าง ๆ ลิงก์ที่มีความซับซ้อนในการคำนวณ (FMT, ความซับซ้อนเชิงพรรณนา)

3
ทำความเข้าใจเกี่ยวกับอัลกอริทึมสำหรับปัญหาปั้มน้ำมัน
ในปัญหาปั้มน้ำมันเราได้รับเมืองnnnเมือง{0,…,n−1}{0,…,n−1}\{ 0, \ldots, n-1 \}และถนนระหว่างทั้งสอง ถนนแต่ละสายมีความยาวและแต่ละเมืองกำหนดราคาน้ำมัน ถนนหนึ่งหน่วยมีราคาน้ำมันหนึ่งหน่วย เป้าหมายของเราคือไปจากแหล่งต้นทางไปยังปลายทางด้วยวิธีที่ถูกที่สุด รถถังของเราถูก จำกัด ด้วยค่าบางอย่าง ฉันพยายามเข้าใจอัลกอริธึมดังนั้นฉันจึงจดขั้นตอนเพื่อคำนวณวิธีแก้ปัญหาด้วยตนเอง น่าเสียดายที่ฉันติดอยู่ - ในบางจุดไม่มีขอบที่ต้องพิจารณาฉันไม่รู้ว่าทำไม ตัวอย่าง: ถนน: 0 ----------- 1 ------------ 2 -------------- 3 (ไม่ได้ ต้องง่ายขนาดนั้นมันอาจเป็นกราฟใดก็ได้เช่นอาจมีถนนระหว่าง 0-> 2, 0-> 3, 1-> 3 เป็นต้น) ที่มา: 0, ปลายทาง: 3, รถถัง: 10 หน่วย ราคาน้ำมัน: 0 : 10 หน่วย, 1 : 10 หน่วย, 2 …

1
เครื่องทัวริง - เทปไม่มีที่สิ้นสุดในหนึ่งหรือสองทิศทาง
ฉันได้เห็นเครื่องทัวริงที่ผึ้งแสดงด้วยเทปไม่มีที่สิ้นสุดในหนึ่งเดียวและในสองทิศทาง พลังของเครื่องจักรทัวริงนั้นมีความแตกต่างหรือไม่ ในหัวของฉันฉันคิดว่ามันเทียบเท่ากันเพราะฉันเดาว่าต้องมีวิธีที่จะเป็นตัวแทนของอนันต์สองทางเป็นเทปอนันต์ทางเดียว แต่ฉันไม่สามารถหาหลักฐานหรือตัวอย่างได้

1
อัลกอริทึมแบบขนานสำหรับการค้นหาสูงสุดใน
เรานำเสนอในชั้นเรียนพร้อมอัลกอริทึมสำหรับการค้นหาสูงสุดในอาเรย์แบบขนานในความซับซ้อนของเวลากับคอมพิวเตอร์n 2O(1)O(1)O(1)n2n2n^2 อัลกอริทึมคือ: รับอาร์เรย์ A ของความยาว n: สร้างอาร์เรย์แฟล็ก B ที่มีความยาว n และกำหนดค่าเริ่มต้นด้วยเลขศูนย์ด้วยคอมพิวเตอร์nnn เปรียบเทียบทุกองค์ประกอบ 2 และเขียน 1 ใน B ที่ดัชนีขั้นต่ำกับคอมพิวเตอร์n2n2n^2 ค้นหาดัชนีด้วย 0 ใน A ด้วยคอมพิวเตอร์nnn อาจารย์บรรยายให้พวกเราเห็นว่าทำได้ด้วยคอมพิวเตอร์และมีการบันทึกnซับซ้อนเวลาnlognnlog⁡n\frac{n}{\log n}lognlog⁡n\log n หลังจากคิดมากฉันไม่สามารถหาวิธีทำได้ ความคิดใด ๆ

1
ความซับซ้อนในการค้นหาเมทริกซ์ pseudoinverse
จำเป็นต้องใช้การคำนวณทางคณิตศาสตร์จำนวนเท่าใดเพื่อค้นหาเมทริกซ์ pseudoinverseของMoore – Penroseในฟิลด์ใด ๆ ถ้าเมทริกซ์กลับด้านและมีค่าซับซ้อนแสดงว่ามันเป็นแค่อินเวอร์ส การค้นหาอินเวอร์สนั้นใช้เวลาO(nω)O(nω)O(n^\omega)โดยที่ωω\omegaคือค่าคงที่การคูณเมทริกซ์ มันเป็นทฤษฎีบท 28.2 ในบทนำสู่อัลกอริทึมรุ่นที่ 3 หากเมทริกซ์มีแถว linearly อิสระหรือคอลัมน์และซับซ้อนมูลค่าแล้วเมทริกซ์ pseudoinverse สามารถคำนวณกับ* ( * ) - 1หรือ( * ) - 1 *ตามลำดับที่*เป็น transpose คอนจูเกต ของ โดยเฉพาะอย่างยิ่งนี้หมายถึงO ( n ω )เวลาสำหรับการค้นหา pseudoinverse ของAAAA∗( A A* * * *)- 1A* * * *(AA* * * *)-1A^*(A A^*)^{-1}( A …

1
เราสามารถตัดสินใจได้อย่างรวดเร็วว่า DFA ที่ให้มามีน้อยที่สุดหรือไม่
การ จำกัด ขอบเขตของออโตมาตา (DFAs) ที่ลดลงอย่างน้อยเป็นปัญหาที่ได้รับการศึกษาอย่างละเอียดในวรรณคดีและมีการเสนออัลกอริทึมหลายอย่างเพื่อแก้ปัญหาดังต่อไปนี้: ให้ DFA , คำนวณ DFA ที่สอดคล้องกัน{A} อัลกอริทึมส่วนใหญ่ทำงานในเวลาพหุนามAAA\mathscr{A}AA\mathscr{A} อย่างไรก็ตามฉันสงสัยว่าตัวแปรการตัดสินใจของปัญหานี้ - "ให้ DFA ,น้อยที่สุดหรือไม่" - สามารถแก้ไขได้อย่างมีประสิทธิภาพมากกว่าการคำนวณออโตเมติกน้อยที่สุด เห็นได้ชัดว่าสิ่งนี้สามารถทำได้อย่างมีประสิทธิภาพโดยการรันอัลกอริธึมการปรับแต่งพาร์ติชันของ Hopcroftแล้วตัดสินใจว่าทุกพาร์ติชันมีสถานะเดียวอย่างแม่นยำหรือไม่AAA\mathscr{A}AA\mathscr{A} ดังที่ Yuval Filmus แนะนำไว้ในคำตอบของเขาตัวแปร decidability สามารถแก้ไขได้เร็วขึ้นโดยใช้อัลกอริธึมมาตรฐาน น่าเสียดายที่ฉันไม่สามารถเห็นได้ว่า (ฉันหวังว่าฉันจะไม่พลาดจุดที่ชัดเจนที่นี่) Yuval ชี้ให้เห็นในความคิดเห็นที่นี่ว่าอัลกอริธึมที่รู้จักกันดีที่สุด (อย่างที่กล่าวข้างต้น) ทำงานในเวลาสำหรับตัวอักษรขนาดคงที่ ดังนั้นฉันจึงไม่เพียง แต่สนใจกำไรที่ได้รับอย่างมีนัยสำคัญทาง asymptotically ในขณะที่สิ่งเหล่านี้ดูเหมือนไม่น่าเป็นไปได้ สิ่งที่รบกวนจิตใจฉันมากที่สุดคือฉันไม่สามารถจินตนาการ "ทางลัด" ใด ๆ ที่อาจมาจากความจริงที่ว่าเราสนใจเพียงคำตอบใช่ไม่ใช่คำตอบ - ไม่ใช่แม้กระทั่งทางลัดที่ช่วยให้ประหยัดเวลาเล็กน้อยแบบไม่แสดงอาการ ฉันรู้สึกว่าอัลกอริธึมที่สมเหตุสมผลทุกอย่างที่ตัดสินใจลดจำนวนขั้นต่ำของ DFA นั้นจะต้องลดความเป็นจริงของ DFA ลงและดูว่ามีอะไรเปลี่ยนแปลงในระหว่างกระบวนการหรือไม่O(nlogn )O(nlog⁡n)\mathcal{O}(n …

1
เคล็ดลับสำหรับการสอนโดยใช้ Live Coding
ฉันมีส่วนร่วมในหลักสูตรการเขียนโปรแกรมและอัลกอริทึมปีแรก ในการบรรยายเมื่อเร็ว ๆ นี้ฉันตัดสินใจที่จะนำเสนอเนื้อหาโดยใช้การเข้ารหัสสดซึ่งหมายความว่าฉันนั่งอยู่หลังแป้นพิมพ์และเขียนรหัสและประเมินผลโดยใช้emacsเพื่ออำนวยความสะดวกในกระบวนการ นี่ค่อนข้างประสบความสำเร็จและนักเรียนแสดงความคิดเห็นว่าพวกเขาชื่นชมรูปแบบการใช้งานมากขึ้น (inter) เนื่องจากนี่เป็นครั้งแรกที่ฉันพยายามใช้รูปแบบการสอนนี้ฉันรู้ว่ามันไม่ได้ทำงานอย่างสมบูรณ์แบบ ปัญหาบางอย่างเกี่ยวข้องกับการไม่เข้าใจemacsอย่างที่ฉันควรจะเป็นและอื่น ๆ เกี่ยวข้องกับการอนุญาตให้นักเรียนใช้คำถามที่ทำให้ฉันห่างไกลจากสคริปต์ของฉัน ฉันรู้ว่าฉันสามารถทำได้ดีกว่า มีแนวทางอะไรบ้างสำหรับการบรรยาย (และการสาธิตอื่น ๆ ) โดยใช้การบรรยายสด ข้อผิดพลาดที่ควรหลีกเลี่ยงคืออะไร

1
นี่คือ NP-hard หรือไม่ ฉันไม่สามารถพิสูจน์ได้
ฉันมีปัญหาและฉันเดาว่า NP-hard แต่ฉันไม่สามารถพิสูจน์ได้ นี่คือกราฟเลเยอร์โดยที่เลเยอร์ 0 คือเลเยอร์ hignest และเลเยอร์ L ต่ำที่สุด มีขอบชี้นำระหว่างเลเยอร์โดยที่ขอบ (A, B) บ่งชี้ว่าโหนด A สามารถ [ครอบคลุม] โหนด B และเมื่อ A สามารถครอบคลุม B ทุกโหนดบนเส้นทางใด ๆ จาก A ถึง B สามารถครอบคลุม B, B สามารถครอบคลุม ตัวเอง ในที่สุดก็มาถึงชุดของโหนด S ฉันต้องเลือกอีกชุดของโหนด ANS และให้แน่ใจว่าสำหรับแต่ละโหนด q ใน S มีโหนด p ใน ANS และ p ครอบคลุม q …
11 graphs  np 

3
อัลกอริทึมเพื่อจับคู่ตัวเลขที่มีจำนวนการเคลื่อนไหวน้อย
นี่เป็นคำถามเกี่ยวกับการแก้ไขระยะทางและเป็นเรื่องง่ายมาก ฉันแค่สมองค่อนข้างตายในเรื่องนี้และไม่สามารถคิดออก รับชุดตัวเลขเช่น [3, 1, 1, 1] คนเราจะเปลี่ยนตัวเลขทั้งหมดให้เป็นตัวเลขเดียวกันได้อย่างมีประสิทธิภาพมากที่สุดอย่างไรด้วยจำนวน "การเคลื่อนไหว" ขั้นต่ำ โดย "ย้าย" หมายถึงการเพิ่มหรือลบออกจากตัวเลข ในตัวอย่างข้างต้นการเคลื่อนไหวที่มีประสิทธิภาพมากที่สุดคือ: [1, 1, 1, 1] สิ่งนี้จะต้องมี 2 การเคลื่อนไหวลดจำนวนแรกสองครั้ง ฉันไม่สามารถหาวิธีที่ดีที่สุดในการค้นหาสิ่งนี้ได้เนื่องจากมีอาร์เรย์ที่ใหญ่กว่าของตัวเลขนับร้อย ตอนแรกฉันพยายามคำนวณจำนวนเฉลี่ยที่ถูกปัดเศษ (ผลรวมของหารด้วยความยาวทั้งหมด) จากนั้นลดลงเป็นค่าเฉลี่ยที่คำนวณ แต่ตัวอย่างข้างบนแตกนี้ต้องใช้การเคลื่อนที่ 4 ครั้งแทน 2 ฉันคิดว่าฉันสามารถคิด: เฉลี่ย, โหมด ค่ามัธยฐาน และรับระยะทางแก้ไขของแต่ละคนเลือกระยะทางขั้นต่ำ อย่างไรก็ตามฉันไม่แน่ใจว่าสิ่งนี้จะถูกต้องในทุก ๆ ครั้งเดียว ฉันจะรู้ได้อย่างไร

2
ปัญหาการคำนวณอย่างหนักในชั้นพิเศษของกราฟสองฝ่าย
ฉันสนใจคุณสมบัติของคลาส bipartite graphsที่ทุกโหนดในเป็น 3-regular, โหนดทั้งหมดในเป็น 2-regular และ. อันดับแรกนี่เป็นกราฟที่รู้จักกันดีในระดับหรือไม่ ประการที่สองG(X∪Y,E)G(X∪Y,E)G(X \cup Y, E)XXXYYY|X|=|2Y/3||X|=|2Y/3||X|=|2Y/3| มีตัวอย่างของปัญหาการคำนวณที่ดื้อดึง จำกัด เฉพาะกราฟสองฝ่ายนี้หรือไม่?

2
ตัวอย่างของภาษาที่ไม่มีบริบทพร้อมกับการเติมที่ไม่มีบริบท
ภาษาที่ไม่มีบริบทจะไม่ถูกปิดภายใต้การเสริม ในการบรรยายเราได้รับอาร์กิวเมนต์เดียวกันกับที่นี่ใน Wikipedia : สำหรับ A = { anขnคม.; m , n ∈ N 0}และB = { aม.ขnคn; m , n ∈ N 0} ,A={anbncm; m,n∈ℕ0}andB={ambncn; m,n∈ℕ0},A = \{\mathtt a^n \mathtt b^n \mathtt c^m;~m, n ∈ ℕ_0\}\quad\text{and}\quad B = \{\mathtt a^m \mathtt b^n \mathtt c^n;~m, n ∈ ℕ_0\}, ทั้งAAAและBBBปราศจากบริบท แต่การแยกA …

1
โครงสร้างข้อมูลสำหรับแผนที่เป็นระยะ
ให้เป็นจำนวนเต็มและให้แทนเซตของจำนวนเต็มทั้งหมด ลองแสดงว่าช่วงเวลาของจำนวนเต็ม\}nnnZZ\mathbb{Z}[a,b][a,b][a,b]{a,a+1,a+2,…,b}{a,a+1,a+2,…,b}\{a,a+1,a+2,\dots,b\} ฉันกำลังมองหาโครงสร้างข้อมูลที่จะเป็นตัวแทนของแผนที่{Z} ฉันต้องการโครงสร้างข้อมูลเพื่อสนับสนุนการดำเนินการต่อไปนี้:f:[1,n]→Zf:[1,n]→Zf:[1,n] \to \mathbb{Z} get(i)get(i)\text{get}(i)ควรกลับ(i)f(i)f(i)f(i) set([a,b],y)set([a,b],y)\text{set}([a,b],y)ควรปรับปรุงเพื่อให้คือการปรับปรุงไปแผนที่ใหม่ดังกล่าวว่าสำหรับและสำหรับb]ffff(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=\cdots=f(b)=yffff′f′f'f′(i)=yf′(i)=yf'(i) = yi∈[a,b]i∈[a,b]i \in [a,b]f′(i)=f(i)f′(i)=f(i)f'(i) = f(i)i∉[a,b]i∉[a,b]i \notin [a,b] stab(i)stab(i)\text{stab}(i)ควรกลับช่วงเวลาที่ใหญ่ที่สุดเช่นนั้นและเป็นค่าคงที่ใน (เช่น )[a,b][a,b][a,b]i∈[a,b]i∈[a,b]i \in [a,b]fff[a,b][a,b][a,b]f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=\cdots=f(b) add([a,b],δ)add([a,b],δ)\text{add}([a,b],\delta)ควรอัปเดตเป็นแผนที่ใหม่เช่นนั้นสำหรับและffff′f′f'f′(i)=f(i)+δf′(i)=f(i)+δf'(i) = f(i) + \deltai∈[a,b]i∈[a,b]i \in [a,b]f′(i)=f(i)f′(i)=f(i)f'(i) = f(i)สำหรับi∉[a,b]i∉[a,b]i \notin [a,b] ] ฉันต้องการให้การดำเนินการแต่ละอย่างมีประสิทธิภาพ ฉันจะนับเวลาหรืออย่างมีประสิทธิภาพ แต่เวลาช้าเกินไป มันก็โอเคถ้าเวลาการทำงานถูกตัดจำหน่ายเวลาการทำงาน มีโครงสร้างข้อมูลที่ทำให้การดำเนินการทั้งหมดเหล่านี้ไปพร้อม ๆO(1)O(1)O(1)O(lgn)O(lg⁡n)O(\lg n)O(n)O(n)O(n) (ฉันสังเกตเห็นรูปแบบที่คล้ายกันเกิดขึ้นในการท้าทายการเขียนโปรแกรมหลายอย่างนี่เป็นลักษณะทั่วไปที่เพียงพอสำหรับปัญหาการท้าทายเหล่านั้นทั้งหมด)

1
ความแตกต่างของปัญหาเป้สะพายหลัง
คุณจะเข้าหาปัญหาเป้ในสถานการณ์การเขียนโปรแกรมแบบไดนามิกได้อย่างไรถ้าตอนนี้คุณต้อง จำกัด จำนวนของสินค้าในเป้หลังด้วยค่าคงที่ ? นี่เป็นปัญหาเดียวกัน (น้ำหนักสูงสุดของทุกรายการมีค่าและน้ำหนัก ) แต่คุณสามารถเพิ่มเฉพาะรายการไปยังเป้และเห็นได้ชัดว่าจำเป็นต้องปรับค่าของเป้ให้เหมาะสมpppWWWvvvwwwppp เราจำเป็นต้องมีมิติที่ 3 หรือเราสามารถหาวิธีอื่นได้โดยไม่ต้องใช้มัน ฉันพยายามที่จะเพิ่มจำนวนรายการในเป้ในเซลล์และรับค่าสูงสุดในตอนท้ายด้วยจำนวนรายการ <=แต่มันไม่ใช่ทางออกที่ดีที่สุดppp

1
พื้นที่รัฐที่เข้าถึงได้ของปริศนา 8 ตัว
ฉันเพิ่งเริ่มเรียนปัญญาประดิษฐ์และสงสัยว่าทำไมพื้นที่รัฐที่เข้าถึงได้ของปริศนา 8 ตัวคือ9!/29!/29!/2 2 ฉันเห็นว่าจำนวนการเรียงสับเปลี่ยนของกระเบื้องคือ9!9!9!แต่ไม่ชัดเจนในทันทีว่าทำไมรัฐครึ่งปริศนาที่เป็นไปได้ถึงไม่สามารถเข้าถึงได้ในสถานะที่กำหนด ทุกคนสามารถทำอย่างละเอียด? รูปภาพของปริศนา 8 ตัวสำหรับการอ้างอิงด้วยการกำหนดค่าแบบสุ่มทางด้านซ้ายและสถานะเป้าหมายทางด้านขวา:

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