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

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

1
คิวลำดับความสำคัญที่มีทั้งการลดคีย์และการเพิ่มคีย์
Fibonnaci กองสนับสนุนการดำเนินการดังต่อไปนี้: insert(key, data) : เพิ่มองค์ประกอบใหม่ให้กับโครงสร้างข้อมูล find-min() : ส่งกลับตัวชี้ไปยังองค์ประกอบด้วยปุ่มต่ำสุด delete-min() : ลบองค์ประกอบที่มีคีย์ขั้นต่ำ delete(node) : ลบองค์ประกอบที่ชี้ไปตาม node decrease-key(node) : ลดคีย์ขององค์ประกอบที่ชี้ไป node การดำเนินการที่ไม่ลบทั้งหมดคือเวลา (ตัดจำหน่าย) และการดำเนินการลบเป็นเวลาตัดจำหน่ายO ( 1 )O(1)O(1)O ( บันทึกn )O(เข้าสู่ระบบ⁡n)O(\log n) มีการใช้งานของคิวลำดับความสำคัญซึ่งสนับสนุนincrease-key(node)ในเวลา (ตัดจำหน่าย) หรือไม่O ( 1 )O(1)O(1)

1
Stack Inspection ทำงานอย่างไร
นี่เป็นสิ่งที่สำคัญสำหรับคำถามอื่น ๆ ของฉันเกี่ยวกับการตรวจสอบกองซ้อน การตรวจสอบสแต็กเป็นกลไกความปลอดภัยที่นำมาใช้ใน JVM เพื่อจัดการกับรหัสการทำงานที่มาจากสถานที่ที่มีระดับความน่าเชื่อถือต่างกัน คำถามนี้มีจุดมุ่งหมายเพื่อค้นหาคำอธิบายอย่างง่ายของฟังก์ชันการทำงาน ดังนั้น: การตรวจสอบสแต็คทำงานอย่างไร

1
การพิสูจน์ว่าการวินิจฉัยกราฟโดยตรงนั้นเป็นปัญหา NP-hard
ฉันมีการบ้านที่มอบหมายให้ฉันทุบตีหัวมาระยะหนึ่งแล้ว มันเกี่ยวกับการเลือกปัญหาที่ทราบแล้วความสมบูรณ์แบบ NP ซึ่งพิสูจน์แล้วและสร้างการลดลงของปัญหาดังกล่าวเป็นปัญหาต่อไปนี้ฉันจะเรียก DGD (การวินิจฉัยกราฟโดยตรง) ปัญหา ตัวอย่างของ DGDประกอบด้วยจุดขอบกำกับและเป็นจำนวนเต็มบวกkจุดที่มีขอบขาเข้าเท่านั้น: มีสามประเภทของจุดมี , จุดที่มีเพียงขอบขาออกและจุดที่มีทั้งขาเข้าและขาออกขอบBให้ยิ่งครั้งที่ฉันV = ฉัน ∪ O ∪ B E k I O B D = O × I(V,E,k)(V,E,k)(V,E,k)V=I∪.O∪.BV=ผม∪.O∪.BV = I \overset{.}{\cup} O \overset{.}{\cup} BEEEkkkIผมIOOOBBBD=O×ID=O×ID=O\times I ตอนนี้ปัญหาคือว่าเราสามารถครอบคลุมโหนดทั้งหมดด้วยองค์ประกอบมากที่สุดของคือDkkkDDD ∃S⊆D,|S|≤k. ∀v∈V. ∃(v1,v2)∈S. v1→∗v→∗v2∃S⊆D,|S|≤k. ∀v∈V. ∃(v1,v2)∈S. v1→∗v→∗v2\qquad \displaystyle \exists\,S\subseteq D, |S|\leq k.\ \forall\, v\in …

4
การหาวิธีแก้ปัญหามุมที่แน่นอนในการเขียนโปรแกรมเชิงเส้นโดยใช้วิธีการจุดภายใน
อัลกอริธึมเริมเดินอย่างตะกละตะกลามที่มุมของโพลีท็อปเพื่อหาทางออกที่ดีที่สุดสำหรับปัญหาการโปรแกรมเชิงเส้น เป็นผลให้คำตอบอยู่เสมอที่มุมของ polytope วิธีการจุดภายในรถเดินเข้าไปด้านในของ polytope เป็นผลให้เมื่อระนาบทั้งหมดของโพลีท็อปเป็นแบบที่ดีที่สุด (หากฟังก์ชันวัตถุประสงค์ขนานกับระนาบอย่างแน่นอน) เราจะได้คำตอบในระนาบกลางระนาบนี้ สมมติว่าเราต้องการหามุมของ polytope แทน ตัวอย่างเช่นถ้าเราต้องการจับคู่สูงสุดโดยลดลงเป็นการเขียนโปรแกรมเชิงเส้นเราไม่ต้องการคำตอบที่ประกอบด้วย "การจับคู่ประกอบด้วย 0.34% ของขอบ XY และ 0.89% ของขอบ AB และ ... " เราต้องการคำตอบด้วย 0 และ 1 (ซึ่ง simplex จะให้เราเนื่องจากทุกมุมประกอบด้วย 0 และ 1 ของ) มีวิธีทำเช่นนี้ด้วยวิธีการจุดภายในที่รับประกันว่าจะหาวิธีการแก้ปัญหามุมที่แน่นอนในเวลาพหุนาม? (เช่นบางทีเราสามารถปรับเปลี่ยนฟังก์ชั่นวัตถุประสงค์เพื่อสนับสนุนมุม)

2
ฉันจะพิสูจน์ได้ว่าภาษานี้ไม่มีบริบทได้อย่างไร
ฉันมีภาษาต่อไปนี้ {0i1j2k∣0≤i≤j≤k}{0i1j2k∣0≤i≤j≤k}\qquad \{0^i 1^j 2^k \mid 0 \leq i \leq j \leq k\} ฉันกำลังพยายามที่จะกำหนดระดับภาษาของ Chomsky ที่เหมาะสม ฉันสามารถดูว่ามันสามารถใช้ไวยากรณ์ไวต่อบริบทได้อย่างไรดังนั้นฉันจึงรู้ว่ามันไวตามบริบทอย่างน้อยที่สุด ดูเหมือนว่าเป็นไปไม่ได้ที่จะสร้างด้วยไวยากรณ์ที่ไม่มีบริบท แต่ฉันมีปัญหาในการพิสูจน์ว่า ดูเหมือนว่าจะผ่านบทแทรก - สูบน้ำเพราะถ้าทั้งหมดถูกวางไว้ในส่วนที่สามของคำใด ๆ (ส่วนที่มีทั้งหมดวินาที) มันสามารถปั๊มและหลายครั้งตามที่คุณต้องการและมันจะอยู่ในภาษานั้น หากฉันผิดคุณสามารถบอกฉันได้ว่าทำไมถ้าฉันพูดถูกฉันยังคงคิดว่าภาษานี้ไม่ใช่บริบทดังนั้นฉันจะพิสูจน์ได้อย่างไร2 v xuvwxyuvwxyuvwxy222vvvxxx

3
มีความแตกต่างระหว่าง
ขณะนี้ฉันกำลังเรียนรู้แคลคูลัสแลมบ์ดาและสงสัยเกี่ยวกับการเขียนคำแลมด้าสองประเภทที่แตกต่างกันดังต่อไปนี้ λxy.xyλxy.xy\lambda xy.xy λ x λ y. x yλx.λY.xY\lambda x.\lambda y.xy มีความแตกต่างในความหมายหรือวิธีที่คุณใช้การลดเบต้าหรือว่าเป็นเพียงสองวิธีในการแสดงสิ่งเดียวกันหรือไม่ โดยเฉพาะคำจำกัดความของการสร้างคู่นี้ทำให้ฉันประหลาดใจ: คู่ = λ x y. λ พี พีx YλxY.λพี.พีxY\lambda xy.\lambda p.pxy

3
วิธีแปลง NFA ด้วยการวนรอบที่ซ้ำซ้อนเป็นนิพจน์ทั่วไป
ถ้าฉันเข้าใจถูกต้อง NFA มีพลังการแสดงออกเช่นเดียวกับการแสดงออกปกติ บ่อยครั้งที่การอ่านการแสดงออกปกติเทียบเท่าจาก NFA นั้นเป็นเรื่องง่าย: คุณแปลวัฏจักรเป็นดวงดาวทางแยกเป็นทางเลือกและอื่น ๆ แต่จะทำอย่างไรในกรณีนี้: [ แหล่งที่มา ] รอบที่ทับซ้อนกันทำให้มองเห็นสิ่งที่หุ่นยนต์นี้ยอมรับได้ยาก (ในแง่ของนิพจน์ทั่วไป) มีเคล็ดลับหรือไม่?

2
กระบวนการ CCS สำหรับตู้กดน้ำที่มีราคาแตกต่างกันสองแบบ
ตู้กดน้ำต้องให้ผู้ใช้ใส่เหรียญ ( ) จากนั้นกดปุ่มหนึ่งในสามปุ่ม:ขอถ้วยชา , เหมือนกันสำหรับกาแฟ และขอเงินคืน (เช่นเครื่องให้เงินคืน: ) เครื่องจ่ายนี้สามารถสร้างแบบจำลองโดยกระบวนการCCSต่อไปนี้:c¯c¯\bar cd¯tead¯tea\bar d_{\text{tea}}eteaeteae_{\text{tea}}r¯r¯\bar rb¯b¯\bar b M=defc.(dtea.e¯tea.M+dcoffee.e¯coffee.M+r.b¯.M)M=defc.(dtea.e¯tea.M+dcoffee.e¯coffee.M+r.b¯.M) M \stackrel{\mathrm{def}}= c.(d_{\text{tea}}.\bar e_{\text{tea}}.M + d_{\text{coffee}}.\bar e_{\text{coffee}}.M + r.\bar b.M) สงครามกลางเมืองยกระดับราคากาแฟเป็นสองเหรียญในขณะที่ราคาของชายังคงอยู่หนึ่งเหรียญ เราต้องการเครื่องที่ได้รับการดัดแปลงซึ่งให้กาแฟหลังจากเหรียญสองเหรียญและได้รับการคืนเงินหลังจากเหรียญหนึ่งหรือสองเหรียญ เราจะจำลองเครื่องที่ดัดแปลงด้วยกระบวนการ CCS ได้อย่างไร

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

1
เป็นไปได้ที่จะได้รับสตริงในระบบการเขียนใหม่นี้หรือไม่?
ระบบการเขียนใหม่เป็นชุดของกฎในรูปแบบของ B ถ้าเราใช้กฎที่เป็นสตริงเราแทนที่ substring ใดในกับ substringและในทางกลับกันA ↔ BA↔BA \leftrightarrow BWWwAAAWWwBBB รับสตริงเริ่มต้นเราสามารถรับในระบบด้วยกฎต่อไปนี้:A A A B BAAABBAAABBB A A BBAABBAAB A ↔ B AA↔BAA \leftrightarrow BA B A B A ↔ A A B BBABA↔AABBBABA \leftrightarrow AABB A A A ↔ A BAAA↔ABAAA \leftrightarrow AB B A ↔ A BBA↔ABBA \leftrightarrow AB …

1
การรวมกันของภาษาที่ไม่มีบริบทเป็นสิ่งที่ปราศจากบริบทเสมอหรือไม่?
ให้ , , ,จะเป็นในสายลำดับ Nite ภาษาบริบทของแต่ละคนซึ่งเป็นนิยามมากกว่าตัวอักษรที่พบบ่อยΣ ให้Lเป็นสมาชิกของL_1 , L_2 , L_3 , \ จุด ; เช่นL = L_1 \ ถ้วย L_2 \ ถ้วย L_3 \ ถ้วย \L 2 L 3 ...L1L1L_1L2L2L_2L3L3L_3……\dotsΣΣΣLLLL1L1L_1L2L2L_2L3L3L_3……\dots L=L1∪L2∪L3∪…L=L1∪L2∪L3∪…L = L_1 \cup L_2 \cup L_3 \cup \dots เป็นกรณีที่LLLเป็นภาษาที่ไม่มีบริบทเสมอหรือไม่

2
การคาดคะเนสาขาประเภทใดสำคัญกว่ากัน?
ฉันสังเกตว่ามีรัฐสองประเภทที่แตกต่างกันในการทำนายสาขา ในการประมวลผลแบบซูเปอร์คาร์ซึ่งการทำนายสาขามีความสำคัญมากและส่วนใหญ่อยู่ในการประมวลผลล่าช้ามากกว่าการดึงข้อมูลการหน่วงเวลา ในขั้นตอนการสอนซึ่งการดึงข้อมูลมีปัญหามากขึ้นเนื่องจากคำแนะนำไม่ได้ถูกดำเนินการจนกระทั่งในภายหลัง ข้อใดต่อไปนี้มีความสำคัญมาก (ซึ่งสิ่งเหล่านี้มีความสำคัญต่อ CPU ในขณะนี้ต่อวัน) หากทั้งสองมีความสำคัญเท่ากันหรือในกรณีที่สองมีความสำคัญมากกว่าทำไมเราไม่มีท่อส่งคำสั่งสองอัน (อาจมีความยาวครึ่งหนึ่ง) และจากนั้นขึ้นอยู่กับกิ่งไม้เพียงแค่เลือกหนึ่งจากนั้นเริ่มประชากรจาก เริ่มต้น?

1
ฟังก์ชั่นกำลังมองหาการเรียงลำดับของตัวเลขของคำนวณได้หรือไม่?
จะตัดสินใจได้อย่างไรว่ามีลำดับของตัวเลขบางส่วนหรือไม่ ππ\piเป็นแรงบันดาลใจให้ฉันถามว่ารูปแบบที่ดูไร้เดียงสาต่อไปนี้สามารถคำนวณได้หรือไม่: ฉ( n ) = { 10ถ้า n¯ เกิดขึ้นในการแทนทศนิยมของ πมิฉะนั้นf(n)={1if n¯ occurs in the decimal representation of π0otherwisef(n) = \begin{cases} 1 & \text{if \(\bar n\) occurs in the decimal representation of \(\pi\)} \\ 0 & \text{otherwise} \\ \end{cases} โดยที่คือการแทนค่าทศนิยมของโดยไม่มีเลขศูนย์นำหน้า nn¯n¯\bar nnnn หากการขยายตัวของทศนิยมมีทุกลำดับหลัก จำกัด (ขอเรียกสิ่งนี้ว่าจำนวนสากล (ฐาน 10)) แล้วคือค่าคงที่1แต่นี่เป็นคำถามทางคณิตศาสตร์แบบเปิด หากไม่ใช่สากลนี่หมายความว่าไม่สามารถคำนวณได้หรือไม่ππ\pi1 π …

4
เหตุใดจึงต้องจัดเก็บลิงก์ตนเองและพาเรนต์ (. และ .. ) ในรายการไดเรกทอรี
พิจารณาระบบไฟล์ที่กำหนดเป้าหมายไว้ที่อุปกรณ์ฝังตัวบางตัวที่ทำมากกว่าเก็บไฟล์ในโครงสร้างไดเร็กทอรีแบบลำดับชั้น ระบบไฟล์นี้ไม่มีการดำเนินการหลายอย่างที่คุณอาจใช้ในระบบเช่น unix และ Windows (ตัวอย่างเช่นสิทธิ์การเข้าถึงของระบบนั้นแตกต่างอย่างสิ้นเชิงและไม่ผูกติดกับข้อมูลเมตาที่จัดเก็บในไดเรกทอรี) ระบบไฟล์นี้ไม่อนุญาตให้ใช้ฮาร์ดลิงก์หรือซอฟต์ลิงค์ใด ๆ ดังนั้นไฟล์ทุกไฟล์มีชื่อที่ไม่ซ้ำกันในโครงสร้างต้นไม้ที่เข้มงวด มีประโยชน์ในการจัดเก็บลิงค์ไปยังไดเรกทอรีตัวเองและผู้ปกครองในโครงสร้างข้อมูลบนดิสก์ที่แสดงถึงไดเรกทอรีหรือไม่ ระบบไฟล์ยูนิกซ์ส่วนใหญ่มี.และ..รายการในดิสก์ ฉันสงสัยว่าทำไมพวกเขาไม่จัดการสิ่งเหล่านั้นที่เลเยอร์ VFS (ไดรเวอร์ระบบไฟล์ทั่วไป) นี่เป็นสิ่งประดิษฐ์ทางประวัติศาสตร์หรือไม่? มีเหตุผลที่ดีหรือไม่และหากเป็นเช่นนั้นจะต้องแม่นยำหรือไม่ดังนั้นฉันจึงสามารถตรวจสอบว่ามีความเกี่ยวข้องกับระบบฝังตัวของฉันหรือไม่

4
การประเมินความซับซ้อนของเวลาโดยเฉลี่ยของอัลกอริธึมการทำฟองอากาศที่กำหนด
พิจารณารหัสเทียมของ bubbleort แบบนี้: FOR i := 0 TO arraylength(list) STEP 1 switched := false FOR j := 0 TO arraylength(list)-(i+1) STEP 1 IF list[j] > list[j + 1] THEN switch(list,j,j+1) switched := true ENDIF NEXT IF switched = false THEN break ENDIF NEXT อะไรคือแนวคิดพื้นฐานที่ฉันต้องจำไว้เพื่อประเมินความซับซ้อนของเวลาโดยเฉลี่ย ฉันได้ทำการคำนวณกรณีที่เลวร้ายที่สุดและดีที่สุดเรียบร้อยแล้ว แต่ฉันก็ตรึกตรองว่าจะประเมินความซับซ้อนเฉลี่ยของวงในเพื่อสร้างสมการ สมการที่แย่ที่สุดคือ: ∑i=0n(∑j=0n−(i+1)O(1)+O(1))=O(n22+n2)=O(n2)∑i=0n(∑j=0n−(i+1)O(1)+O(1))=O(n22+n2)=O(n2) \sum_{i=0}^n \left(\sum_{j=0}^{n …

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