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

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

2
ภาษาของคำที่มีค่าเท่ากับ 001 และ 100 ปกติหรือไม่
ฉันสงสัยว่าภาษาที่มีจำนวนอินสแตนซ์ของสอง substrings เท่ากันจะเป็นปกติหรือไม่ ฉันรู้ว่าภาษาที่มีจำนวนเท่ากับ 1 และ 0 นั้นไม่ปกติ แต่เป็นภาษาเช่นโดยที่L = { w ∣จำนวนอินสแตนซ์ของสตริงย่อย "001" เท่ากับจำนวนอินสแตนซ์ของสตริงย่อย "100" }เป็นประจำหรือไม่ โปรดทราบว่าจะยอมรับสตริง "00100"LLLLLL{ w ∣{w∣\{ w \mid}}\} สัญชาตญาณของฉันบอกฉันว่าไม่ใช่ แต่ฉันไม่สามารถพิสูจน์ได้ ฉันไม่สามารถแปลงร่างเป็นรูปแบบที่สามารถสูบฉีดผ่านบทแทรกของปั๊มน้ำได้ดังนั้นฉันจะพิสูจน์ได้อย่างไร ในทางกลับกันฉันได้ลองสร้าง DFA หรือ NFA หรือนิพจน์ทั่วไปและล้มเหลวในเสื้อผ้าเหล่านั้นด้วยดังนั้นฉันควรดำเนินการอย่างไร ฉันต้องการที่จะเข้าใจสิ่งนี้โดยทั่วไปไม่เพียง แต่สำหรับภาษาที่เสนอ

7
ทำไมดัชนีอาเรย์เชิงลบจึงสมเหตุสมผล
ฉันเจอประสบการณ์แปลก ๆ ในการเขียนโปรแกรม C พิจารณารหัสนี้: int main(){ int array1[6] = {0, 1, 2, 3, 4, 5}; int array2[6] = {6, 7, 8, 9, 10, 11}; printf("%d\n", array1[-1]); return 0; } เมื่อฉันรวบรวมและเรียกใช้สิ่งนี้ฉันจะไม่ได้รับข้อผิดพลาดหรือคำเตือนใด ๆ ดังที่วิทยากรของฉันกล่าวว่าดัชนีอาร์เรย์-1เข้าถึงตัวแปรอื่น ฉันยังสับสนอยู่ทำไมภาษาโปรแกรมโลกถึงมีความสามารถนี้ ฉันหมายความว่าทำไมอนุญาตให้ดัชนีอาเรย์เชิงลบ

4
การศึกษาด้วยตนเองของวิทยาศาสตร์คอมพิวเตอร์
ฉันเป็นชายอายุ 16 ปีที่เพิ่งได้รับสารานุกรมขนาดใหญ่เกี่ยวกับวิทยาการคอมพิวเตอร์โดยเพื่อนของฉัน โดยปกติฉันไม่สนใจคอมพิวเตอร์และเทคโนโลยี แต่วิทยาการคอมพิวเตอร์เริ่มทำให้ฉันหลงใหล อย่างไรก็ตามฉันตั้งใจจะเรียนวิชาฟิสิกส์และ / หรือคณิตศาสตร์และไม่ใช่ CS ดังนั้นคำถามของฉันคือมันจะมีประโยชน์หรือไม่ในการเรียนรู้ด้วยตนเองด้านวิทยาการคอมพิวเตอร์ ฉันไม่ได้เรียนระดับ BSc แต่เป็นพื้นฐานของ CS (เป็นสารานุกรมที่มีหน้าประมาณ 600 หน้า)

5
เหตุผลในการเรียนรู้ตรรกะเชิงประพจน์
ฉันสามารถเข้าใจถึงความสำคัญที่นักวิทยาศาสตร์คอมพิวเตอร์หรือวิศวกรที่เกี่ยวข้องกับการพัฒนาซอฟต์แวร์ควรเข้าใจการศึกษาของ logics พื้นฐานเป็นพื้นฐาน แต่มีงาน / งานใดบ้างที่ต้องการความรู้เกี่ยวกับสิ่งเหล่านี้อย่างชัดเจนนอกเหนือจากงานที่ต้องใช้การนำเสนอความรู้ชนิดใดKnowledge Base? ฉันต้องการฟังประเภทของงานมากกว่าที่จะตอบสนองความคิด เหตุผลที่ฉันถามสิ่งนี้มาจากความอยากรู้อยากเห็นของฉัน ในขณะที่นักเรียน CS ต้องใช้เวลาระยะหนึ่งในวิชานี้บางหลักสูตรที่เน้นการใช้ประโยชน์ได้จริง (เช่นAI-Class ) ข้ามหัวข้อนี้โดยสิ้นเชิง และฉันก็สงสัยว่าตัวอย่างเช่นการรู้predicate logicอาจช่วยวาดภาพER diagramแต่อาจไม่เป็นข้อกำหนด ปรับปรุง 5/27/2012) ขอบคุณสำหรับคำตอบ ตอนนี้ฉันคิดว่าฉันเข้าใจและเห็นด้วยกับความสำคัญของlogicใน CS ด้วยการใช้งานที่มากมาย ฉันเพิ่งเลือกคำตอบที่ดีที่สุดอย่างแท้จริงจากความประทับใจที่ฉันได้รับจากโซลูชันWindows'ปัญหาหน้าจอสีน้ำเงิน
14 logic 

1
ตรรกะลำดับที่สองแบบโมนาดิคสำหรับ Dummies
ฉันเป็นโปรแกรมเมอร์ที่มีการจับออโตมาตะ แต่ไม่ใช่ในเชิงตรรกะ ฉันอ่านในเอกสารว่าทั้งสองมีความสัมพันธ์กันแน่นมาก Finite Automata (DFA) ที่กำหนดอย่างชัดเจน Tree Automata และ Automatic Pushdown ที่มองเห็นได้ล้วนเกี่ยวข้องกับ Monadic Second Order Logic (MSO) แม้ว่าฉันจะเข้าใจออโตมาตะและผู้คน (ในเอกสาร) ได้พยายามอธิบายความสัมพันธ์กับ MSO ให้ฉันพวกเขามักจะมีพื้นฐานที่แข็งแกร่งในด้านตรรกะและความเข้าใจใน MSO เมื่อฉันดูหนังสือและหลักสูตรเกี่ยวกับลอจิกพวกเขาส่วนใหญ่จะจัดการกับลอจิกลำดับแรกเท่านั้นซึ่งดูเหมือนจะค่อนข้างง่ายและประกอบด้วยแนวคิดเพียงไม่กี่อย่าง: ตัวแปรหรือหรือและไม่ใช่นัยสำหรับทุกคนที่มีอยู่ ฯลฯ ใครสามารถอธิบายหรือชี้ให้ฉันไปยังทรัพยากรที่สามารถอธิบายได้: ตรรกะลำดับที่สองคืออะไรในทางตรงกันข้ามกับตรรกะลำดับแรก Monadic กับตรรกะที่ไม่ใช่ Monadic คืออะไร เหตุใดจึงเป็นสิ่งสำคัญที่ตรรกะลำดับที่สองที่จะเป็นแบบ monadic ที่จะตัดสินใจได้หรือทำไมคำถามนี้ผิด? เหตุใดจึงมีลอจิกลำดับที่สองที่เป็นเอกเทศ ความสัมพันธ์กับ DFA อย่างน้อย? ถ้ามันเป็นทรัพยากรมันคงจะดีถ้ามันถือว่าฉันเป็นโปรแกรมเมอร์ไม่ใช่นักตรรกวิทยา ซึ่งหมายความว่าฉันต้องการที่จะเข้าใจว่าฉันจะใช้มันเป็นรหัสเพราะจนกระทั่งแล้วคณิตศาสตร์ก็รู้สึกเหมือนเวทมนตร์ให้ฉัน;) ขอบคุณสำหรับความช่วยเหลือใด ๆ ที่คุณสามารถให้ฉัน ฉันจะขอบคุณมันจริงๆ

3
อัลกอริทึมนี้ยังสามารถใช้เป็นอัลกอริทึมการค้นหาแบบไบนารี่ได้หรือไม่?
ในขณะที่ทำรหัสกะตะที่สอง(ซึ่งขอให้คุณใช้อัลกอริทึมการค้นหาแบบไบนารีห้าครั้งแต่ละครั้งด้วยวิธีการที่แตกต่างกัน) ฉันได้มากับโซลูชันที่แตกต่างกันเล็กน้อยซึ่งทำงานดังนี้: หากฉันมีอาร์เรย์ที่เรียงลำดับความยาว 100 และฉันเห็นว่าเขตข้อมูลเริ่มต้นมีหมายเลข 200 และเขตข้อมูลสิ้นสุดประกอบด้วยหมายเลข 400 ฉันในฐานะคณิตศาสตร์ที่เรียนรู้มนุษย์น่าจะเริ่มค้นหารอบ ๆ เขต 35 ถ้าฉันกำลังค้นหา หมายเลข 270 และไม่ใช่ฟิลด์ 50 เหมือนในอัลกอริธึมการค้นหาไบนารีปกติ จากนั้นถ้าตัวเลขในฟิลด์ 35 ของอาร์เรย์คือ 270, 35 คือดัชนีที่ฉันค้นหา หากไม่ใช่กรณีที่ฉันสามารถเปรียบเทียบจำนวนที่ฉันได้รับ (พูด 280) และทำซ้ำการดำเนินการโดยใช้ส่วนล่างของอาร์เรย์ (ดังนั้นฉันจึงมี 35 ฟิลด์กับเขตข้อมูลเริ่มต้นที่มี 200 และเขตสิ้นสุดที่มี 280) ถ้า จำนวนที่ฉันค้นพบมีค่ามากกว่าสิ่งที่ฉันค้นหาหรือส่วนบนของอาร์เรย์ (บอกว่าฉันได้ 260: ตอนนี้ฉันมีดัชนี 65 ตัว, อันแรกที่มี 260 และอันสุดท้ายที่มี 400 ในแนวตั้งฉันจะมุ่งหน้าแบบ Torward ดัชนี 4 ของอาร์เรย์ย่อยนี้ซึ่งเป็นดัชนี …

6
n * log n และ n / log n เทียบกับเวลาที่ใช้พหุนาม
ผมเข้าใจว่าจะเร็วกว่าΘ ( n log n )และช้ากว่าΘ ( n / log n ) อะไรคือสิ่งที่ยากสำหรับผมที่จะเข้าใจวิธีการที่จริงเปรียบเทียบΘ ( n log n )และΘ ( n / log n )กับΘ ( n ฉ )ที่0 < ฉ< 1Θ ( n )Θ(n)\Theta(n)Θ ( n บันทึกn )Θ(nlog⁡n)\Theta(n\log n)Θ ( n /บันทึกn )Θ(n/log⁡n)\Theta(n/\log n)Θ ( n บันทึกn )Θ(nlog⁡n)\Theta(n \log n)Θ …

1
เครื่องหมายตัวหนอนหมายถึงอะไรในสัญลักษณ์ใหญ่ -O
ฉันอ่านกระดาษและกล่าวว่าในรายละเอียดซับซ้อนเวลาที่ซับซ้อนเวลา{2n})O~( 2)2 n)O~(22n)\tilde{O}(2^{2n}) ฉันค้นหาอินเทอร์เน็ตและวิกิพีเดีย แต่ฉันไม่สามารถหาสิ่งที่ตัวหนอนนี้มีความหมายในสัญกรณ์ใหญ่ -O / Landau ในกระดาษเองฉันยังไม่พบเบาะแสเกี่ยวกับเรื่องนี้ อะไรหมายถึง?O~( ⋅ )O~(⋅)\tilde{O}(\cdot)

1
การปัดเศษจุดลอยตัว
หมายเลขจุดลอยตัว IEEE-754 สามารถ <1 (เช่นสร้างด้วยตัวสร้างตัวเลขสุ่มซึ่งสร้างตัวเลข> = 0.0 และ <1.0) คูณด้วยจำนวนเต็มบางส่วน (ในรูปจุดลอยตัว) เพื่อให้ได้จำนวนเท่ากับหรือมากกว่า จำนวนเต็มนั้นเนื่องจากการปัดเศษ กล่าวคือ double r = random() ; // generates a floating point number in [0, 1) double n = some_int ; if (n * r >= n) { print 'Rounding Happened' ; } นี่อาจเทียบเท่ากับการบอกว่ามี N และ R อยู่เช่นนั้นถ้า …

1
ต้นไม้ Spanning ขั้นต่ำของ MST เข้าถึงได้ทั้งหมดโดย Kruskal และ Prim หรือไม่
ฉันเชื่อว่านี่เป็นความจริง แต่ก็ไม่สามารถพิสูจน์ได้อย่างเป็นทางการเช่นกัน แต่มันเป็นความจริงหรือไม่ที่ต้นไม้สแปนนิ่งขั้นต่ำสามารถเข้าถึงได้โดยใช้อัลกอริทึมของ Kruskal? ในทำนองเดียวกันนี่เป็นความจริงสำหรับอัลกอริทึมของ Prim หรือไม่ แก้ไข: เพื่อให้แม่นยำยิ่งขึ้นฉันต้องการทราบว่าได้รับ MST สำหรับกราฟน้ำหนักที่เชื่อมต่อและไม่ระบุทิศทางหรือไม่รับประกันว่ามีลำดับขั้นตอนโดยใช้ Kruskal หรือ Prim ซึ่งสร้าง MST นี้ เช่นมีตัวเลือกต่าง ๆ สำหรับ Kruskal เมื่อมีหลายขอบที่มีน้ำหนักเท่ากัน เช่นเดียวกันกับ Prim

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

1
เครื่องสุ่มเข้าถึงด้วยการเพิ่มการคูณความเท่าเทียมกันเท่านั้น
วรรณกรรมค่อนข้างชัดเจนว่าแรมหน่วยต้นทุนที่มีการคูณแบบดั้งเดิมนั้นไม่มีเหตุผล ไม่สามารถจำลองโดยเครื่องทัวริงในเวลาพหุนาม สามารถแก้ปัญหาที่สมบูรณ์ของ PSPACE ได้ในเวลาพหุนาม อย่างไรก็ตามการอ้างอิงทั้งหมดที่ฉันสามารถหาได้ในหัวข้อนี้ (Simon 1974, Schonhage 1979) ยังเกี่ยวข้องกับการดำเนินการบูลีนการหารจำนวนเต็ม ฯลฯ มีผลลัพธ์ใด ๆ สำหรับ "ความสมเหตุสมผล" ของแรมที่มีเฉพาะการเพิ่มการคูณและความเท่าเทียมกันหรือไม่ กล่าวอีกนัยหนึ่งซึ่งไม่มีการดำเนินการบูลีนการหารจำนวนเต็มที่ถูกตัดทอนการลบที่ถูกตัดทอน ฯลฯ ? ใครจะคิดว่าแรมดังกล่าวยังค่อนข้าง "ไม่มีเหตุผล" ธงสีแดงหลักคือว่าพวกเขาเปิดใช้งานการสร้างจำนวนเต็มขนาดใหญ่ชี้แจงในเวลาเชิงเส้นและเนื่องจากผลกระทบการบิด - ish ของการคูณนี้สามารถซับซ้อนโดยเฉพาะอย่างยิ่ง อย่างไรก็ตามฉันไม่พบผลลัพธ์ใด ๆ ที่แสดงว่าสิ่งนี้อนุญาตให้มีผลลัพธ์ "ไม่มีเหตุผล" (การเร่งความเร็วแบบยกกำลังของเครื่องทัวริงความสัมพันธ์ที่ไม่สมเหตุสมผลกับ PSPACE และอื่น ๆ ) วรรณกรรมมีผลลัพธ์ใด ๆ ในหัวข้อนี้หรือไม่?

3
แคลคูลัสกับภาษาการเขียนโปรแกรมต่างกันอย่างไร
ฉันคิดว่าฉันค่อนข้างสับสนเกี่ยวกับสิ่งที่เรียกว่าแคลคูลัสและสิ่งที่เรียกว่าภาษาการเขียนโปรแกรม ฉันมักจะคิดและอาจได้รับแจ้งว่าแคลคูลัสเป็นระบบที่เป็นทางการสำหรับการให้เหตุผลเกี่ยวกับความเท่าเทียมกันของโปรแกรม โปรแกรมมีความหมายในการปฏิบัติงานที่ระบุโดยเครื่องซึ่งควร (ฉันคิดว่า?) กำหนดได้ ด้วยวิธีนี้แคลคูลัส (ที่ถูกต้อง) สำหรับภาษาเป็นวิธีการพิสูจน์สำหรับการเทียบเท่าของโปรแกรมLLL ดูเหมือนจะเป็นการแบ่งที่สมเหตุสมผลสำหรับฉัน แต่นี่เป็นความหมายที่ยอมรับกันโดยทั่วไปหรือไม่ หรืออาจจะผิดก็ได้ เกี่ยวข้องทำไมความหมายของการดำเนินงานแบบ nondeterministic (สมมติว่ามันไหลมารวมกัน)? อะไรคือสิ่งที่ได้รับจากการเปิดตัวเลือกกลยุทธ์? ฉันขอขอบคุณการชี้แจงเกี่ยวกับสิ่งเหล่านี้ และการอ้างอิงที่เป็นรูปธรรมมากยิ่งขึ้น! ขอบคุณ!

3
คุณจะได้อะไรถ้าคุณเพิ่มพารามิเตอร์ลงในไวยากรณ์ฟรีตามบริบท
ฉันคิดถึงไวยากรณ์สำหรับภาษาที่มีความอ่อนไหวและดูเหมือนว่าไวยากรณ์กรัมจะทำเคล็ดลับถ้ารวมกับพารามิเตอร์ ลองพิจารณาตัวอย่างนี้สำหรับไวยากรณ์ Python ที่ง่ายขึ้นในรูปแบบ ANTLR: // on top-level the statements have empty indent program : statement('')+ ; // let's consider only one compound statement and one simple statement for now statement(indent) : ifStatement(indent) | passStatement(indent) ; passStatement(indent) : indent 'pass' NEWLINE ; // statements under if must have current indent …

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 σ …

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