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

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

4
มีปัญหา NP ไม่ใช่ใน P และไม่ใช่ NP Complete หรือไม่
มีปัญหาใด ๆ ที่ทราบใน (และไม่ใช่ใน ) ที่ยังไม่เสร็จความเข้าใจของฉันคือว่าไม่มีปัญหาที่เป็นที่รู้จักในขณะนี้ในกรณีนี้ แต่ก็ไม่ได้ถูกตัดออกเป็นความเป็นไปได้ NPNP\mathsf{NP}PP\mathsf{P}NPNP\mathsf{NP} หากมีปัญหานั่นคือ (ไม่ใช่ ) แต่ไม่ใช่นี่จะเป็นผลของการไม่มีมอร์ฟิซึ่มที่มีอยู่ระหว่างอินสแตนซ์ของปัญหานั้นและชุด? หากเป็นเช่นนี้เราจะรู้ได้อย่างไรว่าปัญหาไม่ 'ยากกว่า' ที่เราระบุในขณะนี้เป็นชุด ?NPNP\mathsf{NP}PP\mathsf{P}NP-completeNP-complete\mathsf{NP\text{-}complete}NP-completeNP-complete\mathsf{NP\text{-}complete}NPNP\mathsf{NP}NP-completeNP-complete\mathsf{NP\text{-}complete}

2
ใน“ ความโหดร้ายของการสอนวิทยาศาสตร์คอมพิวเตอร์จริงๆ”
Dijkstra ในเรียงความของเขาในความโหดร้ายของการสอนวิทยาศาสตร์คอมพิวเตอร์จริงทำให้ข้อเสนอต่อไปนี้สำหรับหลักสูตรการเขียนโปรแกรมเบื้องต้น: ในอีกด้านหนึ่งเราสอนสิ่งที่ดูเหมือนว่าแคลคูลัสเพรดิเคต แต่เราทำแตกต่างจากนักปรัชญามาก ในการฝึกอบรมโปรแกรมเมอร์มือใหม่ในการจัดการสูตรที่ไม่ถูกตีความเราสอนมันมากขึ้นในฐานะพีชคณิตแบบบูลทำความคุ้นเคยกับนักเรียนเกี่ยวกับคุณสมบัติเชิงพีชคณิตของตรรกะเชิงเชื่อม เพื่อตัดการเชื่อมโยงไปยังปรีชาเพิ่มเติมเราเปลี่ยนชื่อค่า {true, false} ของโดเมนบูลีนเป็น {black, white} ในทางกลับกันเราสอนภาษาการเขียนโปรแกรมที่ง่ายสะอาดและมีความจำเป็นโดยมีการข้ามและการมอบหมายหลายอย่างเป็นข้อความพื้นฐานพร้อมโครงสร้างบล็อกสำหรับตัวแปรท้องถิ่นเซมิโคลอนเป็นโอเปอเรเตอร์สำหรับองค์ประกอบคำสั่งโครงสร้างทางเลือกที่ดี การทำซ้ำและหากต้องการให้เรียกขั้นตอน ในส่วนนี้เราเพิ่มประเภทข้อมูลขั้นต่ำเช่น booleans, จำนวนเต็ม, อักขระและสตริง สิ่งสำคัญคือสำหรับสิ่งที่เราแนะนำความหมายที่สอดคล้องกันจะถูกกำหนดโดยกฎการพิสูจน์ที่ไปกับมัน ตั้งแต่เริ่มต้นและตลอดหลักสูตรเราเน้นว่างานของโปรแกรมเมอร์ไม่เพียง แต่เขียนโปรแกรม แต่งานหลักของเขาคือให้การพิสูจน์อย่างเป็นทางการว่าโปรแกรมที่เขาเสนอนั้นตรงตามข้อกำหนดการทำงานที่เป็นทางการเท่ากัน ในขณะที่การออกแบบการพิสูจน์และโปรแกรมจับมือนักเรียนได้รับโอกาสที่เพียงพอที่จะสมบูรณ์แบบความคล่องแคล่วว่องไวกับแคลคูลัสภาค สุดท้ายเพื่อขับรถกลับบ้านข้อความที่หลักสูตรการเขียนโปรแกรมเบื้องต้นนี้เป็นหลักสูตรหลักในวิชาคณิตศาสตร์อย่างเป็นทางการเราจะเห็นว่าภาษาการเขียนโปรแกรมที่เป็นปัญหาไม่ได้ดำเนินการในมหาวิทยาลัยเพื่อให้นักเรียนได้รับการปกป้องจากสิ่งล่อใจเพื่อทดสอบโปรแกรมของพวกเขา . เขาเน้นว่านี่เป็นข้อเสนอที่ร้ายแรงและสรุปการคัดค้านที่เป็นไปได้ต่างๆรวมถึงความคิดของเขาที่ว่า "ไม่สมจริงอย่างเต็มที่" และ "ยากเกินไป" แต่ว่าวจะไม่บินทั้งสำหรับสมมุติฐานได้รับการพิสูจน์ผิด: ตั้งแต่ต้นปี 80 หลักสูตรการเขียนโปรแกรมเบื้องต้นดังกล่าวได้รับการประสบความสำเร็จให้กับนักศึกษาหลายร้อยคนในแต่ละปี [เพราะจากประสบการณ์ของฉันการพูดครั้งนี้ไม่พอประโยคก่อนหน้าควรทำซ้ำอย่างน้อยอีกสองครั้ง] หลักสูตรใดที่ Dijkstra อ้างถึงและมีวรรณกรรมอื่นอีกบ้างที่กล่าวถึงเรื่องนี้ เรียงความที่ปรากฏในปี 1988 เมื่อ Dijkstra อยู่ที่มหาวิทยาลัยเท็กซัสที่ออสตินซึ่งอาจเป็นเบาะแส - พวกเขาเป็นเจ้าภาพเก็บถาวร Dijkstra แต่มันมีขนาดใหญ่และฉันสนใจที่จะได้ยินจากคนอื่นเกี่ยวกับหลักสูตรนี้ ฉันไม่ต้องการที่จะพูดคุยว่าความคิดของ Dijkstra ดีหรือเหมือนจริงที่นี่ ฉันพิจารณาการโพสต์สิ่งนี้ใน cstheory.se …

2
ความแตกต่างระหว่างเธรดระดับผู้ใช้และเธรดระดับเคอร์เนลคืออะไร
หลังจากอ่านหลายแหล่งฉันยังคงสับสนเกี่ยวกับเธรดผู้ใช้และเคอร์เนลระดับ โดยเฉพาะอย่างยิ่ง: เธรดสามารถอยู่ได้ทั้งในระดับผู้ใช้และระดับเคอร์เนล อะไรคือความแตกต่างระหว่างระดับผู้ใช้และระดับเคอร์เนล?

2
การเขียนโปรแกรมแบบไดนามิกจากบนลงล่างและล่างขึ้นบนแตกต่างกันหรือไม่?
มีความแตกต่างพื้นฐานระหว่างการเขียนโปรแกรมแบบไดนามิกจากบนลงล่างและล่างขึ้นบนหรือไม่? โดยเฉพาะมีปัญหาที่สามารถแก้ไขจากล่างขึ้นบน แต่ไม่ใช่จากบนลงล่างได้หรือไม่ หรือวิธีการจากล่างขึ้นบนเป็นเพียงการคลี่คลายของการเกิดซ้ำในวิธีการจากบนลงล่าง?

1
เป็นเรื่องยากไหมที่จะเติมถังขยะด้วยการเคลื่อนไหวขั้นต่ำ?
มีถังขยะและประเภทของลูก TH ถังมีป้ายสำหรับก็เป็นจำนวนที่คาดหวังของลูกประเภทJnnnmmmiiiai,jai,ja_{i,j}1≤j≤m1≤j≤m1\leq j\leq mjjj คุณเริ่มต้นด้วยลูกประเภทJลูกของแต่ละชนิดมีน้ำหนักและต้องการที่จะนำลูกลงไปในถังขยะถังดังกล่าวว่ามีน้ำหนักC_iการกระจายตัวของลูกที่สภาพก่อนหน้านี้เรียกว่าทางออกที่เป็นไปได้bjbjb_jjjjjjjwjwjw_jiiicicic_i พิจารณาวิธีแก้ปัญหาที่เป็นไปได้ด้วยลูกบอลประเภทในถังจากนั้นค่าใช้จ่ายคือ. เราต้องการค้นหาวิธีแก้ปัญหาที่มีต้นทุนต่ำที่สุดxi,jxi,jx_{i,j}jjjiii∑ni=1∑mj=1|ai,j−xi,j|∑i=1n∑j=1m|ai,j−xi,j|\sum_{i=1}^n \sum_{j=1}^m |a_{i,j}-x_{i,j}| ปัญหานี้เป็นอย่างชัดเจน NP-ยากถ้ามีข้อ จำกัด ใน\} ปัญหาผลรวมเซ็ตย่อยจะลดการดำรงอยู่ของโซลูชันที่เป็นไปได้{wj}{wj}\{w_j\} อย่างไรก็ตามหากเราเพิ่มเงื่อนไขที่หารสำหรับทุกดังนั้นการลดจำนวนผลรวมของเซ็ตย่อยจะไม่ทำงานอีกต่อไปดังนั้นจึงไม่ชัดเจนว่าปัญหาที่เกิดขึ้นยังคงเป็นปัญหาที่ยากหรือไม่ การตรวจสอบการมีอยู่ของโซลูชันที่เป็นไปได้นั้นใช้เวลาเพียง (แนบท้ายคำถาม) แต่สิ่งนี้ไม่ได้ให้วิธีแก้ปัญหาที่เป็นไปได้ในราคาที่ถูกที่สุดwjwjw_jwj+1wj+1w_{j+1}jjjO(nm)O(nm)O(n\,m) ปัญหามีการกำหนดโปรแกรมจำนวนเต็มเทียบเท่า ให้สำหรับ : ai,j,ci,bj,wjai,j,ci,bj,wja_{i,j},c_i,b_j,w_j1≤i≤n,1≤j≤m1≤i≤n,1≤j≤m1\leq i\leq n,1\leq j\leq mMinimize:subject to:∑i=1n∑j=1m|ai,j−xi,j|∑j=1mxi,jwj=ci for all 1≤i≤n∑i=1nxi,j≤bj for all 1≤j≤mxi,j≥0 for all 1≤i≤n,1≤j≤mMinimize:∑i=1n∑j=1m|ai,j−xi,j|subject to:∑j=1mxi,jwj=ci for all 1≤i≤n∑i=1nxi,j≤bj for all 1≤j≤mxi,j≥0 for all 1≤i≤n,1≤j≤m\begin{align*} \text{Minimize:} & \sum_{i=1}^n …

5
ทัวริงสมบูรณ์หมายถึงอะไร
ฉันเห็นว่าคำจำกัดความส่วนใหญ่ของสิ่งที่จะเป็นทัวริงที่สมบูรณ์นั้นเป็นเรื่องธรรมดาจนถึงระดับหนึ่ง ตัวอย่างเช่นหากคุณ Google "สิ่งที่ทำให้ทัวริงสมบูรณ์หมายถึง" คุณจะได้รับ: คอมพิวเตอร์ทัวริงสมบูรณ์หากสามารถแก้ปัญหาที่เครื่องทัวริงสามารถ ... ในขณะที่มันถูกกำหนดไว้เป็นอย่างดีว่าระบบต่าง ๆ ของทัวริงสมบูรณ์หรือไม่ แต่ฉันไม่ได้เห็นคำอธิบายถึงความหมาย / ผลที่ตามมาของการทำทัวริงให้สมบูรณ์ เครื่องจักรทัวริงทำอะไรได้บ้างโดยที่ไม่มีเครื่องที่ไม่ใช่ทัวริงที่สามารถทำงานแบบเดียวกันได้ ตัวอย่างเช่นคอมพิวเตอร์สามารถทำการคำนวณแบบง่าย ๆ ได้เช่น(1+5)/3=?กัน แต่เครื่องคิดเลขธรรมดาก็สามารถทำได้เช่นกันซึ่งไม่ใช่การทัวริงที่สมบูรณ์หากฉันถูกต้อง มีวิธีในการกำหนดความสามารถของทัวริงโดยไม่ต้องพูดว่า "การจำลองเครื่องทัวริงอื่น" ได้หรือไม่?

2
asymptotically shuffling ไร้เดียงสาแค่ไหน?
เป็นที่ทราบกันดีว่าอัลกอริทึม 'ไร้เดียงสา' สำหรับการสับเปลี่ยนอาเรย์โดยการสลับแต่ละไอเท็มกับอีกอันที่สุ่มเลือกไม่ทำงานอย่างถูกต้อง: for (i=0..n-1) swap(A[i], A[random(n)]); โดยเฉพาะตั้งแต่ที่แต่ละnnnซ้ำหนึ่งของnnnเลือกที่จะทำ (กับความน่าจะเป็นชุด) มีn nnnn^nที่เป็นไปได้ 'เส้นทาง' ผ่านการคำนวณ; เพราะจำนวนการเรียงสับเปลี่ยนที่เป็นไปได้n ! n!n!ไม่แบ่งเท่า ๆ กันตามจำนวนของเส้นทางn nnnn^nมันเป็นไปไม่ได้ที่อัลกอริธึมนี้จะสร้างnแต่ละอัน! n!n!การเรียงสับเปลี่ยนที่มีความน่าจะเป็นเท่ากัน (แต่อย่างใดอย่างหนึ่งควรใช้การสลับแบบFischer-Yatesซึ่งจะเปลี่ยนการโทรเพื่อเลือกหมายเลขสุ่มจาก [0..n) ด้วยการโทรเพื่อเลือกหมายเลขแบบสุ่มจาก [i..n); เป็นสิ่งที่สงสัยกับคำถามของฉัน) สิ่งที่ฉันสงสัยคือการสับเปลี่ยนไร้เดียงสาจะเป็นไปได้อย่างไร โดยเฉพาะอย่างยิ่งการให้P ( n )P(n)P(n)เป็นชุดของพีชคณิตทั้งหมดและC ( ρ )C(ρ)C(\rho)เป็นจำนวนเส้นทางผ่านขั้นตอนวิธีการที่ไร้เดียงสาที่ผลิตที่เกิดการเปลี่ยนแปลงρ ∈ P ( n )ρ∈P(n)\rho\in P(n)สิ่งที่เป็นพฤติกรรมเชิงของการทำงาน M(n)=n!nnmaxρ∈P(n)C(ρ)M(n)=n!nnmaxρ∈P(n)C(ρ)\qquad \displaystyle M(n) = \frac{n!}{n^n}\max_{\rho\in P(n)} C(\rho) และ m(n)=n!nnminρ∈P(n)C(ρ)m(n)=n!nnminρ∈P(n)C(ρ)\qquad \displaystyle m(n) …

2
มีการปรับปรุงอัลกอริทึมของ Dana Angluin สำหรับการเรียนรู้ชุดปกติหรือไม่
ในปี 1987 กระดาษ Dana Angluin นำเสนออัลกอริธึมเวลาพหุนามสำหรับการเรียนรู้ DFA จากการค้นหาสมาชิกและการสอบถามทฤษฎี แสดงให้เห็นว่าเธอว่าถ้าคุณกำลังพยายามที่จะเรียนรู้น้อยที่สุด DFA กับรัฐและ countexample ใหญ่ที่สุดของคุณคือความยาวแล้วคุณต้องการที่จะทำให้สมาชิกแบบสอบถามและที่มากที่สุดทฤษฎีแบบสอบถามnnnmม.mO(mn2)O(ม.n2)O(mn^2)n−1n-1n - 1 มีการปรับปรุงจำนวนแบบสอบถามที่จำเป็นในการเรียนรู้ชุดปกติหรือไม่? การอ้างอิงและคำถามที่เกี่ยวข้อง Dana Angluin (1987) "การเรียนรู้ชุดปกติจากการค้นหาและการตอบโต้", Infortmation และการคำนวณ 75: 87-106 ขอบเขตที่ต่ำกว่าสำหรับการเรียนรู้ในคิวรีการเป็นสมาชิกและโมเดลตัวอย่าง

4
อะไรคือความแตกต่างทางความหมายระหว่างเซตและประเภท?
แก้ไข: ตอนนี้ฉันถามคำถามที่คล้ายกันเกี่ยวกับความแตกต่างระหว่างหมวดหมู่และชุด เวลาที่ฉันอ่านเกี่ยวกับประเภททฤษฎี (ซึ่งเป็นที่ยอมรับค่อนข้างเป็นทางการ) ทุกฉันไม่สามารถจริงๆเข้าใจว่ามันแตกต่างจากการตั้งทฤษฎีเป็นรูปธรรม ฉันเข้าใจว่ามีความแตกต่างทางแนวคิดระหว่างการพูดว่า "x เป็นของชุด X" และ "x เป็นประเภท X" เนื่องจากสัญชาตญาณชุดเป็นเพียงชุดของวัตถุในขณะที่ประเภทมีคุณสมบัติ "บางอย่าง" อย่างไรก็ตามชุดมักจะถูกกำหนดตามคุณสมบัติเช่นกันและถ้าเป็นเช่นนั้นฉันมีปัญหาในการทำความเข้าใจว่าความแตกต่างนี้สำคัญอย่างไร ดังนั้นในที่สุดคอนกรีตทางเป็นไปได้ว่าสิ่งที่มันไม่ได้บ่งบอก เกี่ยวกับxxxจะบอกว่ามันเป็นประเภทTTTเมื่อเทียบกับบอกว่ามันเป็นองค์ประกอบในชุด ?SSS (คุณสามารถเลือกประเภทและชุดที่ทำให้การเปรียบเทียบชัดเจนที่สุด)
33 type-theory  sets 

4
O และΩเกี่ยวข้องกับกรณีที่เลวร้ายที่สุดและดีที่สุดได้อย่างไร?
วันนี้เรามีการหารือในการบรรยายขั้นตอนวิธีการที่ง่ายมากสำหรับการหาองค์ประกอบในอาร์เรย์ที่เรียงลำดับการใช้ค้นหาแบบทวิภาค เราถูกขอให้ระบุความซับซ้อนเชิงซีมของมันสำหรับอาร์เรย์ขององค์ประกอบnnn ความคิดของฉันคือว่าไม่ชัดแจ้งO(logn)O(log⁡n)O(\log n)หรือO(log2n)O(log2⁡n)O(\log_2 n)มีความเฉพาะเจาะจงมากขึ้นเนื่องจากlog2nlog2⁡n\log_2 nเป็นจำนวนการดำเนินการในกรณีที่เลวร้ายที่สุด แต่ผมสามารถทำได้ดีกว่ายกตัวอย่างเช่นถ้าผมตีสืบค้นองค์ประกอบเป็นครั้งแรก - แล้วขอบเขตที่ต่ำเป็นΩ ( 1 )Ω(1)\Omega(1) ) ผู้บรรยายเสนอวิธีแก้ปัญหาเป็นΘ ( บันทึกn )Θ(log⁡n)\Theta(\log n)เนื่องจากเรามักจะพิจารณาเฉพาะกรณีที่แย่ที่สุดสำหรับอัลกอริทึม แต่เมื่อพิจารณาเฉพาะกรณีที่เลวร้ายที่สุดประเด็นของการมีOOOและคืออะไรΩΩ\Omegaเมื่อกรณีที่เลวร้ายที่สุดของปัญหาที่กำหนดมีความซับซ้อนเดียวกัน ( ΘΘ\Thetaจะเป็นสิ่งที่เราต้องการใช่ไหม?) สิ่งที่ฉันหายไปที่นี่?

4
การเขียนโปรแกรมแบบไดนามิกเกี่ยวกับอะไร?
ขออภัยล่วงหน้าหากคำถามนี้ฟังดูเป็นใบ้ ... เท่าที่ฉันรู้การสร้างอัลกอริทึมโดยใช้การเขียนโปรแกรมแบบไดนามิกทำงานในลักษณะนี้: แสดงปัญหาว่าเป็นความสัมพันธ์ที่เกิดซ้ำ; ใช้ความสัมพันธ์ที่เกิดซ้ำทั้งผ่านการบันทึกและผ่านวิธีการจากล่างขึ้นบน เท่าที่ฉันรู้ฉันได้กล่าวทุกอย่างเกี่ยวกับการเขียนโปรแกรมแบบไดนามิก ฉันหมายถึง: การเขียนโปรแกรมแบบไดนามิกไม่ได้ให้เครื่องมือ / กฎ / วิธีการ / ทฤษฎีบทสำหรับการแสดงความสัมพันธ์ที่เกิดขึ้นอีกหรือเปลี่ยนเป็นรหัส ดังนั้นมีอะไรพิเศษเกี่ยวกับการเขียนโปรแกรมแบบไดนามิก? มันให้อะไรคุณนอกจากวิธีคลุมเครือสำหรับการเข้าใกล้ปัญหาบางประเภท?

3
ฮาร์ดแวร์ / การนำไปใช้จะมีผลต่อความซับซ้อนของเวลา / พื้นที่ของอัลกอริทึมหรือไม่
ฉันไม่ใช่นักเรียน CS ดังนั้นนี่อาจเป็นคำถามที่โง่ แต่โปรดอดทนกับฉัน ... ในยุคก่อนคอมพิวเตอร์เราสามารถใช้โครงสร้างข้อมูลอาเรย์กับบางอย่างเช่นอาเรย์ของลิ้นชักเท่านั้น เนื่องจากต้องระบุตำแหน่งลิ้นชักด้วยดัชนีที่สอดคล้องกันก่อนที่จะแยกค่าออกมาความซับซ้อนของเวลาในการค้นหาอาร์เรย์คือโดยสมมติว่าเป็นการค้นหาแบบไบนารีO ( l o g( n ) )O(log(n))O(log(n)) อย่างไรก็ตามการประดิษฐ์คอมพิวเตอร์สร้างความแตกต่างใหญ่ คอมพิวเตอร์สมัยใหม่สามารถอ่านจาก RAM ได้อย่างรวดเร็วจนตอนนี้เราพิจารณาความซับซ้อนของเวลาในการค้นหาอาร์เรย์เป็น (แม้จะไม่ใช่ในทางเทคนิคเพราะมันใช้เวลามากขึ้นในการย้ายรีจิสเตอร์ในระยะไกล ฯลฯ )O ( 1 )O(1)O(1) อีกตัวอย่างหนึ่งคือพจนานุกรม Python ขณะที่หนึ่งอาจได้รับการเข้าถึงความซับซ้อนในพจนานุกรมของกับป่วยเป็นลายลักษณ์อักษรมากเกินไปวิธีมายากล (หรือขันโชคร้ายคือกุญแจมีจำนวนมากของการชนกัญชา) ก็มักจะสันนิษฐานว่าเป็นO ( 1 ) ในกรณีนี้ความซับซ้อนของเวลาขึ้นอยู่กับการใช้งานตารางแฮชของพจนานุกรม Python และการใช้ฟังก์ชั่นแฮชของคีย์O(n)O(n)O(n)__hash__O(1)O(1)O(1) สิ่งนี้หมายความว่าฮาร์ดแวร์ / การนำไปใช้นั้นมีผลต่อความซับซ้อนของเวลาของอัลกอริทึมหรือไม่? (ในขณะที่ทั้งสองตัวอย่างเป็นเรื่องเกี่ยวกับโครงสร้างข้อมูลแทนที่จะเป็นอัลกอริธึม แต่ตัวหลังถูกสร้างขึ้นในอดีตและฉันไม่เคยได้ยินเรื่องความซับซ้อนของเวลาในโครงสร้างข้อมูลดังนั้นฉันจึงใช้คำว่า "อัลกอริทึม" ที่นี่) สำหรับฉันแล้วอัลกอริธึมเป็นนามธรรมและแนวคิดซึ่งคุณสมบัติเช่นความซับซ้อนของเวลา / พื้นที่ไม่ควรได้รับผลกระทบจากการใช้งานในลักษณะที่เฉพาะเจาะจงหรือไม่

2
ภาษาปกติระนาบ
ในชั้นเรียนของฉันนักเรียนคนหนึ่งถามว่าออโตมาต้าที่ จำกัด ทั้งหมดสามารถวาดได้โดยไม่ต้องข้ามขอบ (ดูตัวอย่างทั้งหมดของฉัน) แน่นอนคำตอบนั้นเป็นค่าลบหุ่นยนต์ที่ชัดเจนสำหรับภาษามีโครงสร้างของK_5กราฟที่สมบูรณ์ในห้าโหนด . Yuval ได้แสดงโครงสร้างที่คล้ายกันสำหรับภาษาที่เกี่ยวข้อง{x ∈ { a , b }* * * *∣ #a( x ) + 2 #ข( x ) ≡ 0พอควร5}{x∈{a,ข}* * * *|#a(x)+2#ข(x)≡0พอควร5}\{\; x\in\{a,b\}^* \mid \#_a(x)+2\#_b(x) \equiv 0 \mod 5 \;\}K5K5K_5 คำถามของฉันคือต่อไปนี้: ทำอย่างไรเราจะแสดงให้เห็นว่าทุกหุ่นยนต์สถานะ จำกัด สำหรับภาษานี้ไม่เป็นระนาบ? ด้วย Myhill-Nerode เช่นการจำแนกลักษณะมันอาจจะพิสูจน์ได้ว่าโครงสร้างของภาษานั้นปรากฏอยู่ในแผนภาพ แต่เราจะทำให้สิ่งนี้แม่นยำได้อย่างไร และถ้าสามารถทำได้มีลักษณะของ "ภาษาปกติระนาบ" หรือไม่?

5
ภาษาปกติสามารถทัวริงได้หรือไม่
ฉันกำลังอ่านเกี่ยวกับIota และ Jotและพบว่าส่วนนี้ทำให้เกิดความสับสน: ซึ่งแตกต่างจาก Iota ที่ต้นไม้ syntactic สำหรับสตริงสามารถแยกทั้งทางด้านซ้ายหรือด้านขวาไวยากรณ์ Jot เป็นซ้าย - กิ่งเหมือนกัน เป็นผลให้ Iota ไม่มีบริบทอย่างเคร่งครัด แต่ Jot เป็นภาษาปกติ ความเข้าใจของฉันคือทั้ง Iota และ Jot เป็นทัวริงที่สมบูรณ์ แต่เห็นได้ชัดว่าอย่างใดอย่างหนึ่งไม่มีบริบทและอื่น ๆ เป็นปกติ! แน่นอนว่าภาษาปกติไม่สามารถทำให้ทัวริงสมบูรณ์

5
คอมพิวเตอร์จำได้อย่างไรว่าพวกเขาเก็บของไว้ที่ไหน
เมื่อคอมพิวเตอร์จัดเก็บตัวแปรเมื่อโปรแกรมต้องการรับค่าของตัวแปรคอมพิวเตอร์จะทราบได้อย่างไรว่าจะค้นหาหน่วยความจำสำหรับค่าของตัวแปรนั้นได้อย่างไร

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