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

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

2
อัลกอริทึม Dijkstras ถูกใช้ในระบบค้นหาเส้นทางที่ทันสมัยหรือไม่?
อัลกอริทึมของ Dijkstra ใช้ในระบบค้นหาเส้นทางที่ทันสมัยเช่น Google maps หรือ satnav ในรถยนต์ของคุณหรือไม่? ถ้าไม่เช่นนั้นจะเกิดอะไรขึ้น?

1
การปรับปรุงช่วง + แบบสอบถามช่วงที่มีต้นไม้ที่จัดทำดัชนีไบนารี
ฉันพยายามที่จะเข้าใจว่าต้นไม้ดัชนีแบบไบนารี (ต้นไม้ fenwick) สามารถแก้ไขได้เพื่อจัดการแบบสอบถามทั้งช่วงและการปรับปรุงช่วง ฉันพบแหล่งข้อมูลต่อไปนี้: http://kartikkukreja.wordpress.com/2013/12/2/range-updates-with-bit-fenwick-tree/ http://programmingcontests.quora.com/Tutorial-Range-Updates-in-Fenwick http : //apps.topcoder.com/forums/ โมดูล = Thread & threadid = 756271 & start = 0 & MC = 4 # 1579597 แต่แม้หลังจากอ่านทั้งหมดฉันก็ไม่สามารถเข้าใจได้ว่าจุดประสงค์ของต้นไม้ดัชนีไบนารีตัวที่สองคืออะไรหรือทำอะไร มีคนช่วยอธิบายให้ฉันฟังหน่อยได้ไหมว่าต้นไม้แบบดัชนีแบบไบนารีถูกแก้ไขเพื่อจัดการสิ่งเหล่านี้อย่างไร

1
การแก้ไขความสัมพันธ์ที่เกิดซ้ำกับการโทรซ้ำสองครั้ง
ฉันกำลังศึกษารันไทม์กรณีที่เลวร้ายที่สุดของ quicksort ภายใต้เงื่อนไขที่ว่าจะไม่ทำมากพาร์ทิชันไม่สมดุลสำหรับคำจำกัดความที่แตกต่างของมาก ในการทำเช่นนี้ฉันถามตัวเองว่ารันไทม์ T(n,พี)T(n,p)T(n, p) จะเป็นในกรณีที่ quicksort มักจะเกิดขึ้นกับพาร์ทิชันในบางส่วน 0&lt;พี≤120&lt;p≤120 < p \leq {1\over 2} ดังนั้น ⌊พี(n-1)⌋⌊p(n−1)⌋\lfloor{p(n-1)}\rfloor องค์ประกอบอยู่ในพาร์ทิชันด้านซ้ายและ ⌈(1-พี)(n-1)⌉⌈(1−p)(n−1)⌉\lceil(1 - p)(n - 1)\rceil อยู่ในพาร์ทิชันที่เหมาะสม (ออกจาก 111 องค์ประกอบ pivot ที่อยู่ตรงกลาง) ไม่ยากที่จะเห็นว่า T(n,พี)T(n,p)T(n, p) ให้ขอบเขตบนสำหรับกรณีที่แย่ที่สุดที่ พีpp เป็นพาร์ติชันที่ได้รับอนุญาตไม่สมดุลมากที่สุดเช่นเดียวกับพาร์ทิชันที่มีเศษส่วน &gt;พี&gt;p> p จะมีความสมดุลมากขึ้นและมีรันไทม์ขนาดเล็กลงและเศษส่วนใด ๆ &lt;พี&lt;p<p ไม่อนุญาต เห็นได้ชัดว่า T(n,12)T(n,12)T(n, {1 \over 2}) เป็นกรณีที่ดีที่สุดและ T(n,0)T(n,0)T(n, 0)เป็นกรณีที่แย่ที่สุดของ quicksort …

1
การกลับรายการของ DFA ขั้นต่ำนั้นน้อยที่สุดหรือไม่
คำถามนั้นค่อนข้างมากในชื่อเรื่อง มีช่วงเวลาที่ภาษาสามารถยอมรับได้โดย DFA น้อยที่สุดกับ state หรือไม่ แต่การกลับรายการของสามารถรับได้โดย DFA กับ states โดยที่ ?LLLnnnLRLRL^RLLLม.mmm &lt; nm&lt;nm<n

1
ทำไมฟังก์ชั่นนี้จึงคำนวณได้
ตำราของฉันบอกว่า: "เรากำหนดฟังก์ชันดังนี้:และ . โปรดทราบว่าเมื่อได้รับเราสามารถหาได้ง่ายในเวลาที่หมายเลขที่ถูกคั่นระหว่างและ "ฉ: N → Nf:N→Nf\colon \mathbb{N}\to\mathbb{N}ฉ( 1 ) = 2f(1)=2f(1)=2ฉ( i + 1 ) =2ฉ( ฉัน)1.2f(i+1)=2f(i)1.2f(i+1)=2^{f(i)^{1.2}}nnnโอ(n1.5)O(n1.5)O(n^{1.5})ผมiinnnฉ( i )f(i)f(i)ฉ( i + 1 )f(i+1)f(i+1) ฉันจะโน้มน้าวตัวเองว่าจริง ๆ แล้วเราสามารถหาได้อย่างง่ายดายในเวลา ? ในฐานะที่เป็นถูกกำหนดซ้ำผมคิดว่าเราต้องคำนวณจนกว่าn เพื่อที่จะหาเวลาที่การคำนวณเหล่านี้ใช้ฉันคิดว่าเราต้องหาขอบเขตบนที่เหมาะสมสำหรับขึ้นอยู่กับและเราต้องหาขอบเขตบนของเวลาดำเนินการของฟังก์ชัน1.2}} ในท้ายที่สุดเราหวังว่าจะสามารถแสดงข้อเสนอที่ยกมา น่าเสียดายที่ฉันไม่เห็นสิ่งใดเลยผมiiโอ(n1.5)O(n1.5)O(n^{1.5})ฉffฉ( 1 ) , f( 2 ) , f( 3 ) … f( j )f(1),f(2),f(3)…f(j)f(1),f(2),f(3)\dots f(j)ฉ( j ) …

5
การแปลงกราฟไปเป็นกราฟที่ไม่ได้บอกทิศทางด้วยวิธีย้อนกลับได้
ฉันกำลังมองหาอัลกอริทึมในการแปลงดิจิกราฟ (กราฟกำกับ) เป็นกราฟที่ไม่ได้บอกทิศทางในวิธีที่สามารถย้อนกลับได้นั่นคือดิจิกราฟควรจะสร้างใหม่ได้หากเราได้กราฟที่ไม่ได้เปลี่ยนทิศทาง ฉันเข้าใจว่านี่จะเป็นค่าใช้จ่ายของกราฟที่ไม่ได้บอกทิศทางซึ่งมีจุดยอดมากขึ้น แต่ฉันก็ไม่สนใจ มีใครรู้วิธีการทำเช่นนี้หรือสามารถแนะนำการอ้างอิงใด ๆ ขอบคุณล่วงหน้า. อัปเดต: เกี่ยวกับคำตอบของ AdrianN ด้านล่าง อาจเป็นจุดเริ่มต้นที่ดี แต่ฉันไม่คิดว่ามันจะทำงานในรูปแบบปัจจุบัน นี่คือภาพว่าทำไมฉันจึงคิดว่าไม่: อัปเดตหลังจากความคิดเห็นของ DW: ฉันถือว่าจุดยอดของกราฟเป็นแบบไม่มีป้ายกำกับ หากวิธีการแก้ปัญหาเกี่ยวข้องกับการติดฉลากจุดยอด (เช่นเดียวกับที่ AdrianN ทำ) ก็ควรให้กราฟที่ไม่มีการเปลี่ยนทิศทางแบบเดียวกัน คำจำกัดความของ "isomorphic" สำหรับกราฟที่มีเครื่องหมายจุดยอดคือมีการเรียงสับเปลี่ยนของการติดฉลากที่เกี่ยวข้องกับกราฟทั้งสอง แต่ฉันไม่แน่ใจเกี่ยวกับคำจำกัดความที่แน่นอนสำหรับกราฟที่ไม่มีป้ายกำกับ ...

2
ทฤษฎีบทพิสูจน์ใน Coq
พื้นหลัง ฉันกำลังเรียนความช่วยเหลือ Coq ด้วยตัวเอง จนถึงตอนนี้ฉันได้อ่านCoqของ Yves Bertot อย่างรวดเร็วแล้ว ตอนนี้เป้าหมายของฉันคือการพิสูจน์ผลลัพธ์พื้นฐานบางอย่างเกี่ยวกับตัวเลขธรรมชาติโดยใช้อัลกอริธึมการหารที่เรียกว่าสุดยอด อย่างไรก็ตามฉันได้พบกับความพ่ายแพ้ระหว่างทางไปสู่เป้าหมายนั้น โดยเฉพาะอย่างยิ่งผลลัพธ์ต่อไปนี้ทั้งสองได้พิสูจน์แล้ว (ปุนตั้งใจ) จะยากที่จะพิสูจน์ใน Coq กว่าที่ฉันคิดในตอนแรก ในความเป็นจริงฉันมีหลังจากพยายามหลายครั้งไร้ผลใช้เพื่อพิสูจน์พวกเขาด้วยมือ (ดังแสดงด้านล่าง) ชัดเจนว่าไม่ได้ช่วยให้ฉันมีความเชี่ยวชาญในการจัดการ Coq มากขึ้น นี่คือเหตุผลที่ฉันหันไปฟอรั่มนี้ ความหวังของฉันคือคนในไซต์นี้สามารถและยินดีเพื่อช่วยฉันแปลข้อพิสูจน์ด้านล่างเป็นหลักฐานที่ Coq ยอมรับ ความช่วยเหลือทั้งหมดได้รับการชื่นชมอย่างจริงใจ! ทฤษฎีบท เพื่อทุกสิ่ง x , y∈ Nx,y∈Nx,y \in N x &lt; S( y) ⊂ x &lt; y∨ ฉัน( N, x , y)x&lt;S(y)⊂x&lt;y∨I(N,x,y)\begin{equation} x < S(y) \subset …

2
รวบรวมภาษาการเขียนโปรแกรมด้วยตัวเอง
ฉันเป็นนักเรียนวิทยาศาสตร์คอมพิวเตอร์ ฉันต้องการสร้างภาษาการเขียนโปรแกรมของตัวเอง (ภาษาพื้นฐานพร้อมคำแนะนำเล็กน้อย) ฉันรู้วิธีการวิเคราะห์วากยสัมพันธ์ฉันทำมันแล้วใน Perl ในบทความฉันอ่านบางอย่างเกี่ยวกับคอมไพเลอร์คอมไพเลอร์เสร็จแล้วในตัวเอง เช่นคอมไพเลอร์ C เขียนใน C. เป็นไปได้อย่างไร? ฉันสามารถสร้างภาษาของตัวเอง แต่ฉันไม่รู้ว่าฉันจะใช้มันได้อย่างไร ความคิดใด ๆ เป็นคำถามที่ดีจริงๆและฉันสามารถเขียนบล็อกโครงการได้

1
จะลดจำนวนจุดตัดขอบในไดอะแกรมได้อย่างไร?
ฉันกำลังทำงานกับโปรแกรมแก้ไขไดอะแกรม ไดอะแกรมแสดงรูปร่าง 2D ( โหนด ) ที่เชื่อมต่อกับตัวเชื่อมต่อ ( ขอบ ) ฉันต้องการที่จะเพิ่มการดำเนินการที่ได้รับการเลือกโหนด"disentangles"พวกเขามัน repositions พวกเขาเพื่อลดจำนวนของการข้ามขอบถ้าเป็นไปได้ (และมันก็โอเคถ้าจะต้องวาดด้วยจุดโค้ง) . ดังนั้นฉันต้องการอัลกอริธึมกราฟที่ให้กราฟ( ทอพอโลยี ) การฝังและเซตย่อยของโหนดของมันปรับเปลี่ยนการฝัง ( โทโพโลยีของมัน) บนโหนดเหล่านั้นเท่านั้นเพื่อลดจำนวนของการข้ามขอบ จากการอ่านเกี่ยวกับกราฟยอดและการเรียกดูCabello และ Mohar (2013)ฉันคิดว่าปัญหานี้เป็นปัญหาที่ยาก ดังนั้นฉันจะมีความสุขกับอัลกอริทึม parametrized (เช่นจำนวนข้ามขอบ) ที่มีความซับซ้อนรู้จักพหุนามเวลาที่ซับซ้อนสำหรับค่าพารามิเตอร์ที่กำหนด ดูเหมือนว่าจะเป็นไปได้ แต่ฉันคิดว่ามันไม่ง่ายเลยที่จะคิดอัลกอริธึมด้วยตัวเอง คำถาม: ฉันจะหาอัลกอรึทึมได้ที่ไหน มันมีอยู่หรือไม่ ในซอฟต์แวร์ที่มีอยู่ มีประสบการณ์ในทางปฏิบัติที่สำคัญกับการปฏิบัติการเช่นนี้หรือไม่ (สิ่งที่ดูดีในทางทฤษฎีอาจไม่ดีในทางปฏิบัติหรือในทางกลับกัน) (ฉันไม่แน่ใจว่าจะถามคำถามนี้ที่ไหนดีที่สุด: ที่นี่ใน StackOverflow หรือ MathOverflow?)

3
เป็นไปได้ที่จะพิสูจน์ความปลอดภัยของด้ายหรือไม่
ให้โปรแกรมประกอบด้วยตัวแปรและคำแนะนำที่แก้ไขตัวแปรเหล่านี้และดั้งเดิมการซิงโครไนซ์ (จอภาพ, mutex, การซิงโครไนส์ของ java หรือการล็อกของ C #) เป็นไปได้ไหมที่จะพิสูจน์ว่าโปรแกรมดังกล่าวปลอดภัยหรือไม่? มีรูปแบบที่เป็นทางการสำหรับอธิบายสิ่งต่าง ๆ เช่นความปลอดภัยของด้ายหรือสภาพการแข่งรถหรือไม่?

3
ความแตกต่างระหว่าง Multiprogramming และ Multitasking คืออะไร
ฉันพบว่ามันยากที่จะแยกความแตกต่างระหว่าง Multiprogramming และ Multitasking อย่างชัดเจน แหล่งที่มาหลักของฉันคือWikipediaแต่บทความ WP ดูเหมือนจะขัดแย้งกับแหล่งข้อมูลที่มีชื่อเสียงน้อยกว่า (เช่นอาจารย์วิทยาลัยของฉัน) เมื่อฉันอ่าน WP การประมวลผลหลายจุดเป็นวิธีพื้นฐานของการเพิ่มปริมาณงานของ CPU โดยการสลับบริบทเมื่อกระบวนการรอ I / O Multiprogramming ไม่ได้รับประกันว่าโปรแกรมจะทำงานในเวลาที่เหมาะสม แท้จริงแล้วโปรแกรมแรกอาจทำงานได้นานหลายชั่วโมงโดยไม่จำเป็นต้องใช้อุปกรณ์ต่อพ่วง การแบ่งปันเวลาแบบมีส่วนร่วมซึ่งมีความหมายเหมือนกันกับการทำงานหลายอย่างแบบร่วมมือกันเป็นการปรับปรุงการทำงานแบบหลายโปรแกรม (ซึ่งไม่ได้มีความหมายเหมือนกัน) บริบทซีพียู - สวิทช์เป็นประจำเพื่อให้การแสดงผลของการดำเนินการพร้อมกัน แต่กระบวนการยังคงต้องให้ผลผลิต - และโปรแกรมที่ออกแบบมาไม่ดีสามารถทำให้ระบบอื่น ๆ มัลติทาสกิ้งแบบ Preemptiveใช้การควบคุมการตั้งเวลาที่เข้มงวดมากขึ้นให้ความสำคัญกับกระบวนการบางอย่างมากกว่ากระบวนการอื่น ๆ ภาพรวมนี้ถูกต้องหรือไม่ ถ้าไม่ใช่นั่นเพราะ WP ไม่ถูกต้องหรือเพราะฉันอ่านผิด WP? ทำไมบางแหล่งที่มาดูเหมือนจะทำให้เกิดการรวมหลายโปรแกรมและมัลติทาสกิ้ง?

5
อัลกอริทึมที่มีประสิทธิภาพคืออะไร?
จากมุมมองของพฤติกรรมแบบซีมโทติควิธีใดที่ถือว่าเป็น "ประสิทธิภาพ" อัลกอริทึม? มาตรฐาน / เหตุผลในการวาดเส้นตรงนั้นคืออะไร? โดยส่วนตัวแล้วฉันคิดว่าอะไรก็ตามที่เป็นสิ่งที่ฉันเรียกว่า "พหุนามย่อย" อย่างไร้เดียงสาเช่นนั้นฉ( n ) = o (n2)f(n)=o(n2)f(n) = o(n^2) เช่น n1 + ϵn1+ϵn^{1+\epsilon} จะมีประสิทธิภาพและอะไรก็ตามที่เป็น Ω (n2)Ω(n2)\Omega(n^2)จะเป็น "ไม่มีประสิทธิภาพ" อย่างไรก็ตามฉันได้ยินอะไรก็ตามที่มีคำสั่งพหุนามเรียกว่ามีประสิทธิภาพ อะไรคือเหตุผล

2
ตัวอย่างที่อัลกอริทึม Knuth-Morris-Pratt เร็วกว่า Boyer-Moore?
หน้านี้เกี่ยวกับอัลกอริทึม Knuth-Moriss-Pratt เทียบกับ Boyer-Moore อธิบายกรณีที่เป็นไปได้ที่อัลกอริทึม Boyer-Moore ทนทุกข์ทรมานจากระยะทางข้ามขนาดเล็กในขณะที่ KMP สามารถทำงานได้ดีขึ้น ฉันกำลังมองหาตัวอย่างที่ดี (ข้อความรูปแบบ) ที่สามารถแสดงให้เห็นถึงกรณีนี้ได้อย่างชัดเจน

3
กำลังมองหาพจนานุกรมสัญลักษณ์ทางคณิตศาสตร์ / CS
มีสัญลักษณ์เวียนหลายครั้งที่ใช้ในคณิตศาสตร์และเอกสาร CS แต่หลายคนคิดว่าความคุ้นเคยขั้นพื้นฐานที่ดูเหมือนไม่ค่อยสอนในที่เดียว ฉันกำลังมองหาพจนานุกรมบางอย่างที่เหมือนดังต่อไปนี้โดยเฉพาะอย่างยิ่งจากมุมมอง CS มันจะแสดงรายการสัญลักษณ์ทางคณิตศาสตร์พื้นฐานทั้งหมดและให้ความหมายและตัวอย่าง มันจะพูดถึงสัญลักษณ์ที่บางครั้งใช้ในรูปแบบที่เทียบเท่า มันจะบันทึกข้อผิดพลาดเริ่มต้นทั่วไป มันจะพูดคุยเกี่ยวกับรายละเอียดปลีกย่อยที่ล้อมรอบความหมายที่แตกต่างกันของสัญลักษณ์เดียว (เหมือนหลายคำจำกัดความของคำเดียวกันในพจนานุกรม) มันไม่เพียง แต่จะเป็นคำอธิบายสั้น ๆ ของแต่ละสัญลักษณ์เช่นคำอธิบายเดียวเช่น "เซตย่อย" มันจะแสดงให้เห็นว่าสัญลักษณ์บางครั้ง "เกินพิกัด" ตัวอย่างเช่น(xy)(xy)\binom{x}{y}อาจมีzzzเป็นจำนวนเต็ม แต่บางครั้งzzzอาจเป็นชุดที่มีสัญลักษณ์นี้และมันหมายถึงการเลือกองค์ประกอบจากชุดนี้ [n][n][n]บางครั้งหมายถึงชุดจำนวนเต็ม1…n1…n1 \ldots nหรือบางครั้งก็เป็นอาร์เรย์แบบองค์ประกอบเดียว มันอาจพูดถึงวิธีการอธิบาย "วัตถุ" ที่แตกต่างกันทุกชนิดในแง่ของสัญลักษณ์ที่แตกต่างกันหรือวิธีที่เทียบเท่าในการอ้างอิงถึงวัตถุเหล่านั้น กล่าวอีกนัยหนึ่งเช่น API สำหรับวัตถุทางคณิตศาสตร์ นั่นคือบางครั้งมันก็เป็น "คู่มือรูปแบบ" สำหรับความแตกต่างที่แตกต่างกันในวิธีการนำเสนอการเขียนทางคณิตศาสตร์ นี่จะเป็นแหล่งข้อมูลที่มีประโยชน์มากสำหรับทุกคนที่เขียนคำถามในสแต็กการแลกเปลี่ยนทางคณิตศาสตร์ที่คำถามจำนวนมากล้มเหลวที่จะทำให้รู้สึกว่าไม่เหมาะสมกับวิธีการทางคณิตศาสตร์ที่ยุ่งยาก การแนะนำหนังสือบางเล่มมีคุณสมบัติเหล่านี้มากมาย อย่างไรก็ตามความนึกคิดมันจะเป็นการรักษาแยกต่างหาก นอกจากนี้แน่นอนว่ามันจะออนไลน์ มีสัญลักษณ์ยางเป็นตาราง แต่ไม่เป็นไปตามเกณฑ์ดังกล่าว มีใครเห็น "พจนานุกรมสัญลักษณ์" ที่ตรงกับคุณลักษณะเหล่านี้หรือไม่ (หรือมิฉะนั้นดูเหมือนว่าจะเป็นโครงการวิกิหรือโครงการคำถามที่พบบ่อยหากไม่มีการอ้างอิงที่ดีเช่นนี้)

3
คือความสูงต่ำสุดของไบนารีต้นไม้ทำไม ?
ในคลาส Java ของฉันเรากำลังเรียนรู้เกี่ยวกับความซับซ้อนของคอลเลกชันประเภทต่างๆ ในไม่ช้าเราจะคุยเรื่องต้นไม้ไบนารีซึ่งฉันอ่านมาแล้ว หนังสือระบุว่าความสูงขั้นต่ำของต้นไม้ไบนารีคือแต่ไม่มีคำอธิบายเพิ่มเติมlog2(n+1)−1log2⁡(n+1)−1\log_2(n+1) - 1 มีคนอธิบายได้ไหม

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