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

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

1
มันจะตัดสินได้หรือไม่หากภาษาที่อธิบายด้วยจำนวนครั้งที่เกิดขึ้นเป็นปกติ?
มันเป็นที่รู้จักกันว่าภาษาของคำที่มีจำนวนเท่ากับ 0 และ 1 ไม่เป็นปกติในขณะที่ภาษาของคำที่มีจำนวนเท่ากับ 001 และ 100 เป็นปกติ ( ดูที่นี่ ) ให้สองคำw 1 , w 2w1,w2w_1,w_2 , มัน decidable ถ้าภาษาของคำที่มีจำนวนเท่ากับและเป็นปกติหรือไม่?w 1 w 2w1w_1w2w_2

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 …

2
วิธีการสร้างกราฟตัวขยายปกติ
ฉันจำเป็นต้องสร้างกราฟตัวขยาย d-regular สำหรับ d คงที่ขนาดเล็ก (เช่น 3 หรือ 4) ของจุดยอด n วิธีที่ง่ายที่สุดในการทำสิ่งนี้ในทางปฏิบัติคืออะไร? สร้างกราฟสุ่ม d-regular ซึ่งพิสูจน์แล้วว่าเป็นตัวขยายหรือไม่ ฉันยังอ่านเกี่ยวกับการก่อสร้าง Margulis และกราฟ Ramanujan ที่เป็นส่วนขยายและการก่อสร้างโดยใช้ผลิตภัณฑ์ซิกแซก วิกิพีเดียให้ภาพรวมที่ดี แต่สั้นมาก: http://en.wikipedia.org/wiki/Expander_graph#cite_note-10 แต่ฉันเลือกวิธีไหนในทางปฏิบัติ สำหรับฉันวิธีการเหล่านี้ดูเหมือนจะซับซ้อนมากในการใช้งานและโดยเฉพาะอย่างยิ่งในการทำความเข้าใจและอาจจะค่อนข้างเฉพาะเจาะจง ไม่มีวิธีที่ง่ายกว่านี้อาจเป็นไปตามวิธีเรียงสับเปลี่ยนหรือวิธีการสร้างลำดับของกราฟตัวขยาย d-regular มันอาจจะง่ายกว่าในการสร้างกราฟตัวขยาย b-dart ปกติ? ฉันยังมีคำถามอื่น: สิ่งที่เกี่ยวกับครอบครัวของตัวขยาย d-regular ที่ไม่ดี? แนวคิดเช่นนี้สมเหตุสมผลหรือไม่? หนึ่งสามารถสร้างครอบครัวของกราฟปกติ d- (ที่มีการเชื่อมต่อแน่นอน) ที่ไม่ดีเท่าที่จะทำได้ในแง่ของการขยาย? ขอบคุณล่วงหน้า.

1
เครื่องทัวริงสามารถตัดสินใจได้หรือไม่ว่า NFA ยอมรับสตริงที่มีความยาวช่วงไพร์มหรือไม่?
ฉันต้องการทราบว่าปัญหาต่อไปนี้สามารถตัดสินใจได้: อินสแตนซ์: NFA A ที่มี n สถานะ คำถาม: มีจำนวนเฉพาะบางส่วนที่ p ยอมรับว่ามีความยาวของสตริงไหม ความเชื่อของฉันคือว่าปัญหานี้ไม่สามารถตัดสินใจได้ แต่ฉันไม่สามารถพิสูจน์ได้ decider สามารถมีอัลกอริธึมที่จะเข้าใจได้อย่างง่ายดายว่าตัวเลขใดมีความสำคัญ แต่ฉันไม่เห็นว่ามันจะสามารถวิเคราะห์ NFA ในรายละเอียดได้มากพอที่จะรู้ว่ามันสามารถสร้างความยาวเท่าใด มันสามารถเริ่มต้นการทดสอบสตริงด้วย NFA แต่สำหรับภาษาที่ไม่มีที่สิ้นสุดมันอาจไม่เคยหยุด (และไม่ได้เป็น decider) NFA สามารถเปลี่ยนเป็น DFA หรือนิพจน์ปกติได้อย่างง่ายดายหากโซลูชันต้องการแน่นอน คำถามนี้เป็นสิ่งที่ฉันได้ไตร่ตรองว่าเป็นคำถามเตรียมทำเองสำหรับรอบชิงชนะเลิศที่ฉันจะมาใน 2 สัปดาห์

1
ปัญหาที่น่าสนใจในการเรียงลำดับ
รับหลอดที่มีลูกหมายเลข (สุ่ม) หลอดมีรูสำหรับถอดลูกบอล พิจารณาขั้นตอนต่อไปนี้สำหรับการดำเนินการหนึ่ง: คุณสามารถเลือกหนึ่งลูกหรือมากกว่าจากหลุมและจดจำลำดับที่คุณเลือกลูกบอล คุณจำเป็นต้องเอียงท่อไปทางด้านซ้ายเพื่อให้ลูกบอลที่เหลืออยู่ในท่อเลื่อนไปทางซ้ายและใช้พื้นที่ว่างที่สร้างขึ้นโดยการเอาลูกบอลออก คุณไม่ควรเปลี่ยนลำดับที่คุณเลือกลูกบอลหมายเลขจากท่อ ตอนนี้คุณนำมันกลับมาอีกครั้งในท่อโดยใช้พื้นที่ว่างที่สร้างโดยการเคลื่อนที่ของลูกบอล ขั้นตอนที่ 1 ถึง 3 ถือเป็นการดำเนินการครั้งเดียว ค้นหาการดำเนินงานขั้นต่ำที่จำเป็นในการเรียงลำดับลูกบอลหมายเลขตามลำดับจากน้อยไปหามาก ตัวอย่างเช่น: ถ้าหลอดมี: [ 1 4 2 3 5 6 ] [1 4 2 3 5 6][1\ 4\ 2\ 3\ 5\ 6] จากนั้นเราสามารถนำ444และ555และ666และถ้าเราเอียงท่อไปทางซ้ายเราจะได้[ 1 2 3 ] [1 2 3][1\ 2\ 3]และเราแทรก( 4 5 6 ) (4 …

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
อุณหภูมิเริ่มต้นในขั้นตอนวิธีการอบจำลอง
ฉันได้ทำการทดสอบอุณหภูมิเริ่มต้นที่แตกต่างกันในขั้นตอนวิธีการอบแบบจำลองและสังเกตว่าอุณหภูมิเริ่มต้นมีผลต่อประสิทธิภาพของอัลกอริทึม มีวิธีการคำนวณอุณหภูมิเริ่มต้นที่ดีหรือไม่?

2
“ คำสั่งบังคับใช้” และ“ คำสั่งปกติ” ในแลมบ์ดาแคลคูลัส
คำสั่งที่ใช้บังคับ:ประเมินข้อโต้แย้งของฟังก์ชั่นอย่างเต็มที่ก่อนที่จะประเมินฟังก์ชั่นของตัวเองเช่น - (λx.x2(λx.(x+1) 2)))→(λx.x2(2+1))→ (λx.x2(3))→ 32 → 9(λx.x2(λx.(x+1) 2)))→(λx.x2(2+1))→ (λx.x2(3))→ 32 → 9(\lambda x. x^2(\lambda x.(x+1) \ \ 2))) \rightarrow (\lambda x. x^2(2+1))\rightarrow \ (\lambda x. x^2(3)) \rightarrow \ 3^2 \ \rightarrow \ 9 คำสั่งปกติ:การแสดงออกจะลดลงจากภายนอกในเช่น - (λx.x2(λx.(x+1) 2))→ (λx.(x+1) 2)2→ (2+1)2 →32 → 9(λx.x2(λx.(x+1) 2))→ (λx.(x+1) 2)2→ (2+1)2 →32 → …

3
ทฤษฎี CS และคณิตศาสตร์ - คำแนะนำด้วยตนเอง
ฉันเป็นผู้สำเร็จการศึกษาที่ไม่ใช่ CS และสาขาวิชาของฉันไม่เกี่ยวข้องกับ CS อย่างไรก็ตามในฐานะที่เป็นส่วนหนึ่งของแผนการขนาดใหญ่ที่จะกลายเป็นนักวิทยาศาสตร์คอมพิวเตอร์ฉันต้องการได้รับพื้นฐานที่แข็งแกร่งในวิทยาการคอมพิวเตอร์เชิงทฤษฎีและคณิตศาสตร์ที่เกี่ยวข้องกับ CS ฉันทำวิจัยมากมายและเลือกหนังสือที่ดีที่สุด / ดีจริงๆต่อไปนี้ในหัวข้อ CS และคณิตศาสตร์และต้องการถามความคิดเห็นของคุณเกี่ยวกับ: ความครบถ้วนของหัวข้อครอบคลุม (โปรดแนะนำสิ่งที่ฉันพลาดไป) วัสดุทับซ้อน / พื้นที่ทับซ้อนมากเกินไป (โปรดแนะนำหนังสือที่ควรลบออกจากรายการ) สั่งซื้อเพื่อศึกษาหนังสือ (ฉันอยู่ในลำดับที่ฉันคิดว่าพวกเขาควรจะศึกษา) รายการรู้สึกยาวเกินไปดังนั้นฉันขอขอบคุณคำแนะนำในการนำหนังสือบางเล่มออกโดยไม่สูญเสียความรู้พื้นฐานที่จำเป็นสำหรับ CS ดังนั้นหนังสือคือ: Delight ของนักคณิตศาสตร์โดย WW Sawyer จะพิสูจน์ได้อย่างไร: แนวทางที่มีโครงสร้างโดย Daniel J. Velleman วิธีแก้ปัญหา: มุมมองใหม่ของวิธีการทางคณิตศาสตร์โดย G. Polya บทนำของการโปรแกรมเชิงหน้าที่ผ่านแลมบ์ดาแคลคูลัสโดย Greg Michaelson รากฐานของวิทยาศาสตร์คอมพิวเตอร์โดย Al Aho และ Jeff Ullman (http://i.stanford.edu/~ullman/focs.html) คณิตศาสตร์คอนกรีต: มูลนิธิวิทยาศาสตร์คอมพิวเตอร์โดยเกรแฮม Knuth และ Patashnik …
14 books 

1
อัลกอริธึมที่มีประสิทธิภาพสำหรับการเรียกการปิดสกรรมกริยาของกราฟเชิงเส้นกำกับ
ฉันพยายามที่จะแก้ปัญหากราฟ (ไม่ใช่สำหรับการบ้านเพียงเพื่อฝึกทักษะของฉัน) DAG จะถูกกำหนดโดยที่VคือชุดของจุดยอดและEคือขอบ กราฟจะแสดงเป็นรายการถ้อยคำดังนั้นโวลต์เป็นชุดที่มีการเชื่อมต่อทั้งหมดของโวลต์ งานของฉันคือการหาที่จุดสามารถเข้าถึงได้จากแต่ละจุดสุดยอดวี∈ V โซลูชันที่ฉันใช้มีความซับซ้อนของ O ( V 3 )G(V,E)G(V,E)G(V,E)VVVEEEAvAvA_vvvvv∈Vv∈Vv\in VO(V3)O(V3)O(V^3)ด้วยการปิดสกรรมกริยา แต่ฉันอ่านว่าในบล็อกมันสามารถเร็วกว่าแม้ว่ามันจะไม่เปิดเผยก็ตาม ใครช่วยบอกฉันอีกวิธีหนึ่ง (มีความซับซ้อนที่ดีขึ้น) เพื่อแก้ปัญหาการปิดสกรรมกริยาใน DAG?

2
P = ได้อย่างไร? NP ปรับปรุงการแยกตัวประกอบจำนวนเต็ม
ถ้าทำจริงเท่ากับN Pสิ่งนี้จะปรับปรุงอัลกอริธึมของเราให้คำนึงถึงจำนวนเต็มเร็วขึ้นได้อย่างไร ความจริงนี้จะทำให้เราเข้าใจการแยกตัวประกอบจำนวนเต็มดีขึ้นหรือไม่PP{\sf P}NPNP{\sf NP}

2
อัลกอรึทึมของ Bellman-Ford - เหตุใดจึงสามารถปรับปรุงขอบให้ล้าสมัยได้?
อัลกอริทึม Bellman ฟอร์ดเป็นตัวกำหนดเส้นทางที่สั้นที่สุดจากแหล่งเพื่อจุดอื่น ๆ ทั้งหมด ในขั้นต้นระยะห่างระหว่างsและจุดอื่น ๆ ทั้งหมดถูกตั้งค่าให้∞ จากนั้นคำนวณเส้นทางที่สั้นที่สุดจากsถึงจุดสุดยอดแต่ละจุด สิ่งนี้ดำเนินต่อไปสำหรับ | V | - 1ซ้ำ คำถามของฉันคือ:ssssss∞∞\inftysss|V|−1|V|−1|V|-1 ทำไมต้องมีซ้ำ|V|−1|V|−1|V|-1 มันจะสำคัญไหมถ้าฉันตรวจสอบขอบตามลำดับอื่น พูดถ้าฉันตรวจสอบขอบ 1,2,3 เป็นครั้งแรก แต่จากนั้นในการทำซ้ำครั้งที่สองฉันตรวจสอบ 2,3,1 MIT Prof. Eric กล่าวว่าคำสั่งไม่สำคัญ แต่สิ่งนี้ทำให้ฉันสับสน: อัลกอริทึมจะอัปเดตโหนดบน edge ไม่ถูกต้องหรือไม่หากค่าของมันขึ้นอยู่กับ edge x 1แต่x 1นั้นได้รับการอัปเดตหลังจากx 2หรือไม่x2x2x_2x1x1x_1x1x1x_1x2x2x_2

2
ฟังก์ชั่นที่กระจายอินพุต
ฉันต้องการทราบว่ามีฟังก์ชันจากหมายเลข n-bit ไปยังหมายเลข n-bit ที่มีคุณสมบัติดังต่อไปนี้หรือไม่:fff fffควรเป็น bijective ทั้งและน่าจะคำนวณได้อย่างรวดเร็วffff−1f−1f^{-1} fffควรคืนค่าตัวเลขที่ไม่มีความสัมพันธ์อย่างมีนัยสำคัญกับอินพุต เหตุผลคือ: ฉันต้องการเขียนโปรแกรมที่ทำงานกับข้อมูล ข้อมูลบางส่วนของข้อมูลจะถูกเก็บไว้ในแผนผังการค้นหาแบบไบนารี่โดยที่คีย์การค้นหาเป็นสัญลักษณ์ของตัวอักษร เมื่อเวลาผ่านไปฉันจะเพิ่มสัญลักษณ์เพิ่มเติมให้กับตัวอักษร สัญลักษณ์ใหม่จะได้รับหมายเลขฟรีต่อไป ดังนั้นต้นไม้จะมีอคติเล็ก ๆ น้อย ๆ กับคีย์ที่เล็กกว่าซึ่งทำให้เกิดการปรับสมดุลมากกว่าที่ฉันคิดว่าควรจะต้องการ ความคิดของฉันคือการฉีกตัวเลขสัญลักษณ์ที่มีเช่นที่พวกเขามีการแพร่กระจายอย่างกว้างขวางไปทั่วทั้งช่วงของ-1] เนื่องจากหมายเลขสัญลักษณ์มีความสำคัญเฉพาะในระหว่างอินพุตและเอาต์พุตที่เกิดขึ้นเพียงครั้งเดียวการใช้ฟังก์ชันดังกล่าวจึงไม่ควรแพงเกินไปfff[0,264−1][0,264−1][0,2^{64}-1] ฉันคิดเกี่ยวกับการวนซ้ำของตัวสร้างตัวเลขสุ่ม Xorshift หนึ่งครั้ง แต่ฉันไม่รู้วิธีการยกเลิกมันจริงๆแม้ว่ามันจะเป็นไปได้ในทางทฤษฎี ใครรู้ฟังก์ชั่นดังกล่าวหรือไม่? นี่เป็นความคิดที่ดีหรือไม่?

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

2
การจำแนกประเภทของอัลกอริทึมแบบสุ่ม
จากWikipediaเกี่ยวกับอัลกอริทึมแบบสุ่ม เราต้องแยกความแตกต่างระหว่างอัลกอริธึมที่ใช้อินพุตแบบสุ่มเพื่อลดเวลาทำงานที่คาดหวังหรือการใช้หน่วยความจำ แต่มักจะสิ้นสุดด้วยผลลัพธ์ที่ถูกต้องในระยะเวลาที่ จำกัด และ อัลกอริธึมความน่าจะเป็นซึ่งขึ้นอยู่กับอินพุตสุ่ม ของการสร้างผลลัพธ์ที่ไม่ถูกต้อง (อัลกอริทึม Monte Carlo) หรือล้มเหลวในการสร้างผลลัพธ์ (อัลกอริทึม Las Vegas) โดยการส่งสัญญาณความล้มเหลวหรือล้มเหลวในการยุติ ฉันสงสัยว่า " อัลกอริทึมชนิดแรกใช้อินพุตแบบสุ่มเพื่อลดเวลาทำงานหรือการใช้หน่วยความจำที่คาดไว้ แต่จะสิ้นสุดด้วยผลลัพธ์ที่ถูกต้องในระยะเวลาที่ จำกัด หรือไม่ ความแตกต่างระหว่างอัลกอริธึมกับลาสเวกัสซึ่งอาจล้มเหลวในการสร้างผลลัพธ์คืออะไร ถ้าฉันเข้าใจถูกต้องอัลกอริธึมที่น่าจะเป็นและอัลกอริธึมแบบสุ่มไม่ใช่แนวคิดเดียวกัน อัลกอริธึมความน่าจะเป็นเป็นเพียงหนึ่งในอัลกอริธึมแบบสุ่มและอีกประเภทหนึ่งคือการใช้อินพุตแบบสุ่มเพื่อลดเวลาทำงานหรือการใช้หน่วยความจำที่คาดไว้ แต่จะสิ้นสุดด้วยผลลัพธ์ที่ถูกต้องในเวลา จำกัด

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