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

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

4
เหตุใดสถาปัตยกรรม CPU ใช้การตั้งค่าสถานะ (ข้อดี)
CPU บางตัวมีค่าสถานะการลงทะเบียน (ARM, x86, ... ), ตัวอื่น ๆ ไม่ (MIPS, ... ) อะไรคือข้อดีของการมีคำสั่ง CMP เพื่ออัปเดตค่าสถานะการลงทะเบียนตามด้วยคำสั่งสาขาแทนที่จะใช้การลงทะเบียนเป็นศูนย์และสาขาที่มีเงื่อนไขเพื่อตรวจสอบเครื่องหมายล้น ฯลฯ

2
เหตุใด MIPS จึงรวม shamt และแยกความแตกต่างหน้าที่ / opcode
ฉันสับสนว่าทำไมนักออกแบบ MIPS จึงรวม 5 บิตไว้สำหรับการเลื่อนและมี opcode และบิตการทำงานแยกต่างหาก เพราะ MIPS นั้น RISC ฉันคิดว่าการขยับจะทำได้ในไม่กี่คำสั่งดังนั้น 5 บิตเหล่านั้นจึงดูเหมือนว่าพวกเขากำลังสูญเสียพื้นที่เมื่อพวกเขาสามารถวางในทันที ฉันคิดว่า opcodes และฟังก์ชั่นนั้นแยกต่างหากสำหรับการแยกคำสั่ง R- และ I- ชนิด แต่สามารถทำได้โดยขยาย opcode ด้วย 1 บิต ด้วยคำแนะนำ R-type ทั้งสองนี้อาจมีความยาว 22 บิต สิ่งนี้จะไม่ทำงานหากคำแนะนำประเภท I และ J-type ต้องการเก็บไว้ทันทีและที่อยู่ แต่ทั้งคู่ก็ไม่จำเป็น

1
ทดสอบว่าจัตุรมุขอยู่ข้างในรูปทรงหลายเหลี่ยมหรือไม่
ฉันมีจัตุรมุข และรูปทรงหลายหน้าถูก จำกัด เช่นนั้นจะแบ่งปันจุดยอดทั้งหมดกับเสมอ ฉันต้องการตรวจสอบว่าอยู่ภายในหรือไม่p t p t pเสื้อเสื้อt พีพีpเสื้อเสื้อtพีพีpเสื้อเสื้อt พีพีp ฉันต้องการที่จะเพิ่มรายละเอียดในการแก้ไขปัญหาในกรณีที่อาจนำไปสู่การแก้ปัญหา:เป็นDelaunayจัตุรมุขและใบหน้าของเป็นรูปสามเหลี่ยมและขอ Delaunayทั้งที่เกี่ยวกับจุดของพีจัตุรมุขเป็นDelaunayถ้าcircumsphereของจุดของมันไม่มีจุดสุดยอดอื่น ๆ ภายในมัน ใบหน้าเป็นอย่างยิ่ง Delaunayถ้ามี circumsphere ที่มีจุดของใบหน้าที่อยู่บนพื้นผิวของมัน แต่ไม่มีจุดสุดยอดอื่น ๆบนหรือภายในมันp pเสื้อเสื้อtพีพีpพีพีp ตัวเลขต่อไปนี้แสดงปัญหาเดียวกันในพื้นที่ : 2 D2D2D รูปหลายเหลี่ยมเดิมพีพีp : Delaunay การหาจุดยอดของพีพีp : ผลของการทดสอบภายใน / ภายนอกสำหรับสามเหลี่ยมเสื้อเสื้อt p (สามเหลี่ยมแรเงาอยู่ข้างใน และส่วนที่เหลืออยู่ด้านนอก ):พีพีp ผลลัพธ์ที่ต้องการ (การตัดแต่งนอกรูปสามเหลี่ยม) : ปัญหาเดิมของฉันอยู่ในพื้นที่ 3D เพื่อสามเหลี่ยมในข้างต้นตัวเลขแปล Tetrahedrons และรูปหลายเหลี่ยมแปลโดยพลรูปทรงหลายหน้าฉันพบสูตรบางส่วนของปัญหานี้แล้ว:p pเสื้อเสื้อtพีพีpพีพีp สูตร 1 ส่วนเดียวของที่สามารถจะอยู่นอกขอบและใบหน้าสามเหลี่ยม …

2
อะไรทำให้ทัวริงทัวริงสมบูรณ์
ฉันรู้ว่ามันสามารถพิสูจน์ได้ว่า PROLOG นั้นเสร็จสมบูรณ์โดยการสร้างโปรแกรมที่จำลองเครื่องทัวริงดังนี้: turing(Tape0, Tape) :- perform(q0, [], Ls, Tape0, Rs), reverse(Ls, Ls1), append(Ls1, Rs, Tape). perform(qf, Ls, Ls, Rs, Rs) :- !. perform(Q0, Ls0, Ls, Rs0, Rs) :- symbol(Rs0, Sym, RsRest), once(rule(Q0, Sym, Q1, NewSym, Action)), action(Action, Ls0, Ls1, [NewSym|RsRest], Rs1), perform(Q1, Ls1, Ls, Rs1, Rs). symbol([], b, []). …

1
การสร้างเมทริกซ์ไบนารีไม่เท่ากัน
ฉันกำลังพยายามสร้างเมทริกซ์8 × ไม่เท่ากันทั้งหมด(หรือn × nถ้าคุณต้องการ) ด้วยองค์ประกอบ 0 หรือ 1 การดำเนินการที่ให้เมทริกซ์ที่เท่ากันคือการแลกเปลี่ยนพร้อมกันของแถว i และ j และคอลัมน์ i และ j เช่น. สำหรับ1 ↔ 2 ( 0 0 0 0 1 1 1 0 0 ) ∼ ( 1 0 1 0 0 0 0 0 1 0 )8 × 88×88\times 8n × nn×nn\times …

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

1
ทำไมอัตราส่วนการบีบอัดโดยใช้ bzip2 สำหรับลำดับของ“ a” น่ากลัวมาก?
library(ggplot2) compress <- function(str) { length(memCompress(paste(rep("a", str), collapse=""), type="bzip2")) / nchar(paste(rep("a", str), collapse="")) } cr <- data.frame(i = 1:10000, r = sapply(1:10000, compress)) ggplot(cr[cr$i>=5000 & cr$i<=10000,], aes(x=i, y=r)) + geom_line() อัตราการบีบอัดเริ่มต้นที่ 37 สำหรับ "a" และกระทบกับจุดคุ้มทุนที่ 39 "a" (อัตราส่วนการบีบอัด = 1) แผนภูมิเริ่มออกมาเรียบสวยและหงุดหงิดในเวลา 98 "a" และจากจุดนั้นไปเรื่อย ๆ ระดับต่ำสุดในพื้นที่และส่วนที่ราบรื่นดูเหมือนค่อนข้างผิดปกติและสุ่ม ใครสามารถอธิบายให้ฉันฟังได้ว่าทำไม bzip2 แสดงพฤติกรรมนี้ในตัวอย่างนี้

6
วิธีการใช้สองกองในหนึ่งแถว?
ฉันต้องการเริ่มด้วยการบอกว่านี่ไม่ใช่คำถามทำการบ้าน ฉันกำลังอ่านรู้เบื้องต้นเกี่ยวกับอัลกอริทึม - ข้อความ CLRS ที่มีชื่อเสียงที่จะกลายเป็นโปรแกรมเมอร์ที่ดีขึ้น ฉันพยายามที่จะแก้ปัญหาและการออกกำลังกายที่ได้รับในหนังสือด้วยตัวเอง ฉันพยายามที่จะแก้ปัญหาการออกกำลังกาย 10.1-2จากบทที่ 10 โครงสร้างข้อมูลพื้นฐานจาก CLRS Second Edition นี่คือสิ่งที่รัฐ: อธิบายวิธีการใช้สองกองในหนึ่งอาร์เรย์[1..n]ในลักษณะที่ไม่สแต็คล้นเว้นแต่จำนวนรวมขององค์ประกอบทั้งในกองด้วยกันคือn การผลักดันการดำเนินงานและ POP ควรทำงานในO (1)เวลา ทางออกที่ฉันเกิดขึ้นจนถึงตอนนี้คือ: ให้อาร์เรย์[1..n]ใช้สองกอง: S1 [1..i]และS2 [i..n] สำหรับการดำเนินการPUSH-S1และPUSH-S2หากสแต็ค 'เต็ม' จากนั้นเริ่มต้นการผลักองค์ประกอบเข้าสู่สแต็กอื่น ๆ (เช่นถ้าสแต็คS1เต็มเมื่อองค์ประกอบใหม่พยายามที่จะผลักดันเข้าไปแล้วผลักองค์ประกอบนั้นเข้าไป stack S2และในทางกลับกัน) ปัญหาของวิธีนี้คือฉันจะไม่สามารถใช้POP-S1หรือPOP-S2ได้อย่างน่าเชื่อถือเนื่องจากไม่มีวิธีการ 'จดจำ' องค์ประกอบใดที่เป็นของสแต็กใด หากองค์ประกอบของสแต็กเป็นคู่(คีย์, ค่า)คีย์คือหมายเลขสแต็กจากนั้นจึงปรากฏองค์ประกอบที่ฉันจะต้องค้นหาในกรณีที่เลวร้ายที่สุดฉันหรือ (ni) ครั้ง - ซึ่งจะเป็นO (n ) (รู้สึกอิสระที่จะถูกต้องฉันหากฉันผิดที่นี่) ซึ่งจะไม่เป็นO (1) ฉันต่อสู้กับคำถามมาระยะหนึ่งแล้ว ฉันกำลังติดตามใช่ไหม? ใครสามารถให้คำแนะนำที่เป็นไปได้สำหรับการแก้ไขปัญหานี้ได้บ้าง โดยทั่วไปแล้วฉันควร …

1
การแยกเอกซ์โพเนนเชียลระหว่าง NFA และ DFAs ต่อหน้าสหภาพ
เมื่อเร็ว ๆ นี้มีการถามคำถามที่น่าสนใจและถูกลบในภายหลัง สำหรับภาษาปกติความซับซ้อนของDFAคือขนาดของ DFA ขั้นต่ำที่ยอมรับและความซับซ้อนของNFAคือขนาดของ NFA ขั้นต่ำที่ยอมรับได้ เป็นที่ทราบกันดีว่ามีการแยกเอกซ์โพเนนเชียลระหว่างความซับซ้อนสองอย่างน้อยเมื่อขนาดของตัวอักษรไม่ได้ จำกัด จริง ๆ ลองพิจารณาภาษาแทนอักษรประกอบด้วยคำทั้งหมดที่ไม่มีสัญลักษณ์ทั้งหมด ใช้ Myhill-Nerode ทฤษฎีบทมันเป็นเรื่องง่ายในการคำนวณ DFA ซับซ้อน n ในทางกลับกันความซับซ้อนของ NFA เป็นเพียง (ถ้าอนุญาตเริ่มต้นหลายสถานะมิฉะนั้นจะเป็น )LLL { 1 , ... , n }LnLnL_n{ 1 , … , n }{1,…,n}\{1,\ldots,n\} n n + 12n2n2^nnnnn + 1n+1n+1 คำถามที่เกี่ยวข้องลบDFA ครอบคลุมความซับซ้อนของภาษาซึ่งเป็นน้อยที่สุดเช่นว่าสามารถเขียนเป็นสหภาพ (ไม่จำเป็นต้องเคลื่อน) ภาษาของความซับซ้อน DFA ที่มากที่สุดCความซับซ้อนครอบคลุม DFA …

2
ปัญหาการตัดสินใจใน
อะไรคือตัวอย่างของปัญหาการตัดสินใจที่ยากที่สามารถแก้ไขได้ในเวลาพหุนาม ฉันกำลังมองหาปัญหาที่อัลกอริทึมที่เหมาะสมที่สุดคือ "ช้า" หรือปัญหาที่อัลกอริทึมที่รู้จักกันเร็วที่สุดคือ "ช้า" นี่คือสองตัวอย่าง: การรับรู้กราฟที่สมบูรณ์แบบ ในบทความ FOCS'03 [1] Cornuéjols, Liu และ Vuskovic ให้เวลาอัลกอริธึมสำหรับปัญหาโดยที่nคือจำนวนจุดยอด ฉันไม่แน่ใจว่าขอบเขตนี้ได้รับการปรับปรุงหรือไม่ แต่เมื่อฉันเข้าใจแล้วจำเป็นต้องมีการพัฒนาที่มากขึ้นหรือน้อยลงเพื่อให้ได้อัลกอริทึมที่เร็วขึ้น (ผู้เขียนให้อัลกอริทึมO ( n 9 )เวลาในรุ่นวารสารของ [1] ดูที่นี่ )O ( n10)O(n10)O(n^{10})nnnO ( n9)O(n9)O(n^9) การรับรู้กราฟแผนที่ Thorup [2] ให้อัลกอริทึมที่ค่อนข้างซับซ้อนที่มีสัญลักษณ์เป็น (ประมาณ?) 120บางทีนี่อาจได้รับการปรับปรุงให้ดีขึ้นอย่างมาก แต่ฉันไม่มีการอ้างอิงที่ดี120120120 ฉันสนใจในปัญหาที่มีความสำคัญในทางปฏิบัติและได้รับอัลกอริทึม "เร็ว" (หรือแม้แต่ในทางปฏิบัติ) ได้เปิดเป็นเวลาหลายปี [1] Cornuéjols, Gérard, Xinming Liu และ Kristina Vuskovic "อัลกอริทึมแบบพหุนามสำหรับการจดจำกราฟที่สมบูรณ์แบบ" รากฐานของวิทยาการคอมพิวเตอร์, …

3
ขนาดที่เล็กที่สุดของการทำสัญญา DAG เป็น DAG ใหม่
เรามี DAG เรามีฟังก์ชั่นบนโหนด (พูดอย่างอิสระเรานับจำนวนโหนด) เราต้องการสร้างกราฟกำกับใหม่ด้วยกฎเหล่านี้:F:V→NF:V→ยังไม่มีข้อความF\colon V\to \mathbb N เฉพาะโหนดที่มีหมายเลขเท่ากันเท่านั้นที่สามารถทำการต่อสัญญาในโหนดใหม่เดียวกันได้ Y' (อย่างไรก็ตาม, .)F(x)≠F(y)⇒x′≠y′F(x)≠F(Y)⇒x'≠Y'F(x) \neq F(y) \Rightarrow x' \neq y'x′≠y′⇏F(x)≠F(y)x'≠Y'⇏F(x)≠F(Y)x' \neq y'\nRightarrow F(x) \neq F(y) เราได้เพิ่มทุกขอบเก่าระหว่างโหนดใหม่: (x,y)∈E∧x′≠y′⟺(x′,y′)∈E′(x,Y)∈E∧x'≠Y'⟺(x',Y')∈E'(x,y) \in E \land x' \neq y' \iff (x',y')\in E'E' กราฟใหม่นี้ยังคงเป็น DAG อะไรคือสิ่งที่น้อยที่สุด|V′||V'||V'|? อัลกอริทึมคืออะไรสร้างกราฟใหม่ที่น้อยที่สุด

1
ใครคือผู้บัญญัติกฎหมายของ Paxos?
ในเอกสารเผยแพร่ระบบน้ำเชื้อPart Time Parliament (The Paxos protocol), Leslie Lamport ตั้งชื่อสมาชิกสภานิติบัญญัติสวมซึ่งมีส่วนเกี่ยวข้องในพิธีสารรัฐสภา Paxon ตามที่เขียนนี้เขาบันทึกว่า: ฉันให้ชื่อนักวิทยาศาสตร์คอมพิวเตอร์แก่สภานิติบัญญัติกรีกซึ่งทำงานในสาขานี้โดยทับศัพท์ด้วยความช่วยเหลือของ Guibas ให้เป็นภาษากรีกปลอม ใครบ้างมีข้อมูลเกี่ยวกับนักวิทยาศาสตร์ที่สมาชิกสภานิติบัญญัติได้รับการตั้งชื่อ? รายชื่อสมาชิกสภานิติบัญญัติในเอกสารและนักวิทยาศาสตร์คอมพิวเตอร์ที่เกี่ยวข้องจะเป็นคำตอบที่เหมาะสมที่สุด ฉันคิดว่าผู้บัญญัติกฎหมายคนแรกที่กล่าวถึงในเอกสาร "Λινχ∂" ได้รับการตั้งชื่อตามแนนซี่ลินช์เนื่องจากอาจออกเสียงได้ว่า "Linch" นอกจากนี้ "ΛεωνίδαςΓκίμπας" จากบรรณานุกรมเป็นสิงห์ Guibas ฉันหลงทางอย่างสิ้นเชิงว่าตัวเองเป็นใคร

6
มีการใช้โปรยอะไรบ้าง?
Wikipedia พูดว่า : โปรยที่สมบูรณ์ปรากฏในแอปพลิเคชั่นมากมายในวิชาคณิตศาสตร์และวิทยาการคอมพิวเตอร์ มันหมายถึงความจริงที่ว่าพีชคณิตแบบบูลมาตรฐานที่ใช้ในการคำนวณเป็นโครงข่ายที่สมบูรณ์หรือไม่? มีอะไรที่เราจะได้รับจากการทำงานในระดับนามธรรมของโปรยแทนที่จะใช้บูลีนลอจิกโดยเฉพาะ? การค้นหา google ไม่ค่อยพบหัวข้อนี้มากนัก แต่ฉันอาจใช้คำหลักผิด

4
กราฟมีต้นไม้สองสามครั้งที่แตกต่างกันเล็กน้อย?
ฉันกำลังพยายามหาวิธีที่มีประสิทธิภาพในการตรวจสอบว่ากราฟที่ระบุ G มีต้นไม้ทอดข้ามน้อยที่สุดสองแบบหรือไม่ ฉันกำลังพยายามหาวิธีในการตรวจสอบว่ามีต้นไม้ที่ขยายเล็ก ๆ น้อย ๆ 3 แบบหรือไม่ โซลูชันไร้เดียงสาที่ฉันคิดว่ากำลังเรียกใช้อัลกอริทึมของ Kruskal เพียงครั้งเดียวและค้นหาน้ำหนักรวมของต้นไม้ที่ทอดน้อยที่สุด จากนั้นนำขอบออกจากกราฟและเรียกใช้อัลกอริทึมของ Kruskal อีกครั้งและตรวจสอบว่าน้ำหนักของต้นไม้ใหม่นั้นเป็นน้ำหนักของต้นไม้ที่ขยายเล็กสุดดั้งเดิมหรือไม่และสำหรับแต่ละขอบของกราฟ รันไทม์คือ O (| V || E | log | V |) ซึ่งไม่ดีเลยและฉันคิดว่ามีวิธีที่ดีกว่าที่จะทำ ข้อเสนอแนะใด ๆ ที่จะเป็นประโยชน์ขอบคุณล่วงหน้า


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