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

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

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

2
อัลกอริทึมการจับคู่สตริง k ไม่ตรงกันอย่างรวดเร็ว
ฉันกำลังมองหาอัลกอริทึมการจับคู่สตริง k-mismatch ที่รวดเร็ว กำหนดสตริงรูปแบบ P ของความยาว m และสตริงข้อความ T ของความยาว n, ฉันต้องการอัลกอริทึม (เชิงเส้นเวลา) ที่รวดเร็วเพื่อค้นหาตำแหน่งทั้งหมดที่ P ตรงกับสตริงย่อยของ T กับ k ไม่ตรงกันมากที่สุด สิ่งนี้แตกต่างจากปัญหาความแตกต่างของ k (ระยะทางแก้ไข) ไม่ตรงกันหมายถึงสตริงย่อยและรูปแบบมีตัวอักษรที่แตกต่างกันในตำแหน่ง k มากที่สุด ฉันต้องการเพียง k = 1 (มากที่สุด 1 ไม่ตรงกัน) ดังนั้นอัลกอริทึมที่รวดเร็วสำหรับกรณีเฉพาะของ k = 1 ก็จะเพียงพอเช่นกัน ขนาดตัวอักษรคือ 26 (ตัวพิมพ์เล็กและตัวพิมพ์เล็ก) ดังนั้นความต้องการพื้นที่ไม่ควรเติบโตเร็วเกินไปเมื่อเทียบกับขนาดของตัวอักษร (เช่นอัลกอริทึม FAAST ฉันเชื่อว่าใช้พื้นที่ชี้แจงแทนขนาดตัวอักษรและอื่น ๆ เหมาะสำหรับลำดับโปรตีนและยีนเท่านั้น) วิธีการเขียนโปรแกรมแบบไดนามิกที่ใช้มีแนวโน้มที่จะเป็น O (mn) …

1
Micro-optimization สำหรับการคำนวณระยะทางแก้ไข: ถูกต้องหรือไม่
บนWikipedia จะมีการติดตั้งชุดรูปแบบการเขียนโปรแกรมแบบไดนามิกจากล่างขึ้นบนสำหรับระยะแก้ไข ไม่ปฏิบัติตามคำจำกัดความอย่างสมบูรณ์ เซลล์ภายในจะถูกคำนวณดังนี้: if s[i] = t[j] then d[i, j] := d[i-1, j-1] // no operation required else d[i, j] := minimum ( d[i-1, j] + 1, // a deletion d[i, j-1] + 1, // an insertion d[i-1, j-1] + 1 // a substitution ) } อย่างที่คุณเห็นอัลกอริทึมจะเลือกค่าจากเพื่อนบ้านบนซ้ายถ้ามีการจับคู่การบันทึกการเข้าถึงหน่วยความจำการดำเนินการ ALU และการเปรียบเทียบ …

1
ตัวแปรที่แตกต่างสำหรับส่วนคำสั่งต่างๆ
ในการพิสูจน์ทฤษฎีบทการแก้ปัญหามันมักจะสันนิษฐานตัวแปรในข้อที่แตกต่างกันมีความแตกต่าง นี่ไม่ใช่สิ่งที่เกิดขึ้นโดยอัตโนมัติ มันต้องมีรหัสพิเศษที่สำคัญและการคำนวณที่จะใช้ ระบุว่าฉันกำลังมองหากรณีทดสอบสำหรับมัน ปัญหาคือในทุกกรณีการทดสอบที่ฉันได้ลองมามันไม่ได้สร้างความแตกต่าง สันนิษฐานว่ามันสำคัญเฉพาะในกรณีขอบที่ผิดปกติ ดังที่Wikipediaกล่าวไว้ว่า "ตัวแปรในส่วนคำสั่งที่ต่างกันมีความชัดเจน ... ตอนนี้การรวม Q (X) ในข้อแรกกับ Q (Y) ในข้อที่สองหมายความว่า X และ Y กลายเป็นตัวแปรเดียวกันอยู่แล้ว" มีกรณีทดสอบที่รู้จักกันซึ่งจริง ๆ แล้วจะให้คำตอบที่ไม่ถูกต้องถ้าส่วนต่าง ๆ ใช้ตัวแปรเดียวกันหรือไม่

2
การกำหนดหมายเลขเฉพาะในเวลาและพื้นที่ (กรณีที่แย่ที่สุด)
\newcommand\ldotd{\mathinner{..}}ระบุว่าA[1..n]A[1..n]A[1\ldotd n]เป็นจำนวนเต็มเช่น0≤A[k]≤m0≤A[k]≤m0\le A[k]\le mสำหรับ1≤k≤n1≤k≤n1\le k\le nทั้งหมดและการเกิดขึ้นของแต่ละรายการ หมายเลขยกเว้นหมายเลขเฉพาะในA[1..n]A[1..n]A[1\ldotd n]เป็นเลขคี่ พยายามค้นหาหมายเลขที่มีเหตุการณ์เป็นเลขคู่ มีอัลกอริทึมΘ(nlogn)Θ(nlog⁡n)\Theta(n\log n) : เราจัดเรียงA[1..n]A[1..n]A[1\ldotd n]เป็นB[1..n]B[1..n]B[1\ldotd n]และแบ่งB[1..n]B[1..n]B[1\ldotd n]ออกเป็นหลาย ๆ ชิ้นซึ่งค่าขององค์ประกอบคือ เหมือนกันดังนั้นเราสามารถนับการเกิดขึ้นของแต่ละองค์ประกอบ ฉันต้องการค้นหาอัลกอริธึมที่แย่ที่สุด - O(n)O(n)O(n) -time-and- O(n)O(n)O(n) -space สมมติว่าm=Ω(n1+ϵ)m=Ω(n1+ϵ)m=\Omega(n^{1+\epsilon})และϵ>0ϵ>0\epsilon>0ดังนั้นการเรียงลำดับของ Radix จึงไม่เป็นที่ยอมรับ \DeclareMathOperator{\xor}{xor} ไบนารี Bitwise การดำเนินงานเป็นที่ยอมรับเช่นA[1]xorA[2]A[1]xor⁡A[2]A[1]\xor A[2][2]


1
ภาษาปกติปิดภายใต้การจัดเรียง (ภาพ Parikh) หรือไม่
สมมติว่าLLLเป็นภาษาปกติของตัวอักษรที่เรียงตามลำดับ ภาษาสร้างขึ้นโดยการใช้คำทุกคำในและเรียงลำดับเป็นภาษาปกติหรือไม่?LLL

2
ฟังก์ชัน hashing อ่อนแอสำหรับที่อยู่ IPv6 ที่น่าจดจำ
ที่อยู่ IPv6 ในรูปแบบของ862A:7373:3386:BF1F:8D77:D3D2:220F:D7E0การจดจำหรือถอดความได้ยากกว่า IPv4 4 แห่ง มีได้ รับการพยายามที่จะลดความรุนแรงนี้ทำให้อยู่ IPv6 อย่างใดน่าจดจำมากขึ้น มีฟังก์ชั่นการแฮชที่อ่อนแอโดยเจตนาซึ่งสามารถย้อนกลับเพื่อค้นหาว่าวลีนั้นพูดว่า"นี่ค่อนข้างอ่อนโยนและง่ายต่อการสังเกตถ้าวลีนั้นงอเพื่อไม่คุ้มค่าที่จะจ่าย"จะไปยังที่อยู่ IPv6 เป้าหมายหรือไม่ แน่นอนว่าแฮชจะมีอินพุตการชนจำนวนมากให้เลือกและประโยคที่น่าจดจำยิ่งกว่าเช่นวลีตัวอย่างนี้สามารถเสนอให้โดยอัตโนมัติ ฉันเดาว่ามีสองส่วน: อันดับแรกแฮชที่อ่อนแอด้วยการกระจายที่ดีในทั้งสองทิศทาง ประการที่สองคืออัลกอริทึมสำหรับการเลือกวลีที่น่าจดจำจากหลายชน (สั้นประกอบด้วยคำจากภาษาที่ระบุบางทีแม้ตามไวยากรณ์ง่าย) แม้ว่าฟังก์ชั่นแฮชจะต้องอ่อนแอ แต่ฉันไม่สงสัยเลยว่าความพยายามยังคงมีความสำคัญ - อย่างไรก็ตามเมื่อรู้วลีแล้วการคำนวณแฮชไปยังที่อยู่เป้าหมายนั้นรวดเร็วมาก แก้ไข ฉันพบแนวคิดที่เกี่ยวข้องนี้Piphilologyสำหรับการจดจำตัวเลขบางส่วนของπ: ฉันต้องการเครื่องดื่มแอลกอฮอล์แน่นอนหลังจากการบรรยายอย่างหนักเกี่ยวกับกลไกควอนตัม!

1
การกำหนดความคล้ายคลึงกันของสตริงที่กำหนดให้กับชุดของสตริง
ฉันไม่แน่ใจว่าคำถามนี้เป็นของที่นี่และฉันขอโทษถ้าไม่ได้ สิ่งที่ฉันต้องการทำคือการพัฒนาวิธีการเขียนโปรแกรมที่ฉันสามารถตรวจสอบความน่าจะเป็นว่าสตริงที่กำหนด "เป็น" ในถุงของสตริง ตัวอย่างเช่นถ้าฉันมีชื่อเมือง 10,000 ชื่อในอเมริกาและมีสตริง "ฟิลาเดลเฟีย" ฉันต้องการวัดเชิงปริมาณของโอกาสที่ 'ฟิลาเดลเฟีย' เป็นชื่อเมืองในสหรัฐอเมริกาตามชื่อเมืองที่ฉันรู้จัก ในขณะที่ฉันรู้ว่าฉันจะไม่สามารถแยกชื่อเมืองจริงออกจากชื่อเมืองปลอมในบริบทนี้อย่างน้อยฉันก็คาดหวังว่าจะมีสตริงเช่น "123.75" และ "สุนัขจิ้งจอกสีแดงอย่างรวดเร็วกระโดดข้ามสุนัขสีน้ำตาลขี้เกียจ" ยกเว้น เกณฑ์บางอย่าง ในการเริ่มต้นฉันดูที่ Levenshtein Distance และแหย่เล็กน้อยเกี่ยวกับวิธีการนำไปใช้กับปัญหาอย่างน้อยค่อนข้างคล้ายกับที่ฉันพยายามแก้ไข แอปพลิเคชั่นที่น่าสนใจอย่างหนึ่งที่ฉันค้นพบคือการตรวจจับการลอกเลียนแบบโดยมีกระดาษหนึ่งเล่มอธิบายว่าระยะทางของ Levenshtein ถูกนำไปใช้กับอัลกอริทึม Smith-Waterman ที่แก้ไขเพื่อทำคะแนนเอกสารได้อย่างไร คำถามของฉันคือถ้าใครสามารถชี้ให้ฉันไปในทิศทางที่ถูกต้องกับอัลกอริทึมหรือวิธีการอื่นที่อาจช่วยฉันได้ ฉันรู้สึกว่านี่อาจเป็นปัญหาที่บางคนในอดีตพยายามแก้ไข แต่จนถึงตอนนี้ Google-fu ของฉันก็ล้มเหลวฉัน

2
ความสูงเฉลี่ยของต้นไม้ไบนารีคืออะไร?
มีคำจำกัดความเกี่ยวกับความสูงเฉลี่ยของต้นไม้ไบนารีหรือไม่? ฉันมีคำถามเกี่ยวกับการสอนเกี่ยวกับการค้นหาความสูงเฉลี่ยของต้นไม้ไบนารีโดยใช้สองวิธีต่อไปนี้: วิธีแก้ปัญหาตามธรรมชาติอาจจะใช้ความยาวเฉลี่ยของเส้นทางที่เป็นไปได้ทั้งหมดจากรากถึงใบไม้นั่นคือ )AVH1( T) = 1# ใบไม้ใน T⋅ ∑วี ใบ Tความลึก( v )avh1⁡(T)=1# leaves in T⋅∑v leaf of Tdepth⁡(v)\qquad \displaystyle \operatorname{avh}_1(T) = \frac{1}{\text{# leaves in } T} \cdot \sum_{v \text{ leaf of } T} \operatorname{depth}(v) อีกทางเลือกหนึ่งคือการกำหนดมันซ้ำ ๆ นั่นคือความสูงเฉลี่ยสำหรับโหนดคือค่าเฉลี่ยสูงกว่าความสูงเฉลี่ยของ subtrees บวกหนึ่งนั่นคือ AVH2( N( l , r ) ) = avh2( …

1
พิสูจน์ว่าฟังก์ชั่นบูลีนคำนวณได้ใน T (n) โดยเครื่อง RAM อยู่ใน DTIME (T (n) ^ 2)
คำถามคือการออกกำลังกาย 1.9 จากหนังสือComputational Complexityของ Arora-Barak - วิธีการที่ทันสมัย : กำหนดเครื่อง RAM ทัวริงให้เป็นเครื่องทัวริงที่มีหน่วยความจำเข้าถึงโดยสุ่ม เราทำสิ่งนี้อย่างเป็นทางการดังนี้: เครื่องมีอาเรย์ที่ไม่มีที่สิ้นสุดซึ่งเริ่มต้นกับช่องว่างทั้งหมด มันเข้าถึงอาร์เรย์นี้ดังนี้ หนึ่งในเทปงานของเครื่องถูกกำหนดให้เป็นเทปที่อยู่ นอกจากนี้เครื่องยังมีสัญลักษณ์พิเศษสองตัวแสดงโดย R และ W และสถานะเพิ่มเติมที่เราแสดงโดย q_access เมื่อใดก็ตามที่เครื่องเข้าสู่ q_access หากเทปที่อยู่มี 'i'R (โดยที่' i 'หมายถึงการแทนค่าไบนารี่ของ i) ดังนั้นค่า A [i] จะถูกเขียนในเซลล์ถัดจากสัญลักษณ์ R หากเทปมี 'i'Wa (โดยที่ a คือสัญลักษณ์บางอย่างในตัวอักษรของเครื่อง) จากนั้น A [i] จะถูกตั้งค่าเป็น a แสดงว่าถ้าฟังก์ชั่นแบบบูลคือคำนวณภายในระยะเวลา (บางครั้ง constructible ) โดยแรม TM …

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

1
จะพิสูจน์ได้อย่างไรว่า lo-loops ไม่จำเป็นใน PDAs
ในบริบทของการตรวจสอบheap ออโตมาตาฉันต้องการพิสูจน์ว่าตัวแปรเฉพาะไม่สามารถยอมรับภาษาที่ไม่คำนึงถึงบริบท เนื่องจากเราไม่มีรูปแบบของไวยากรณ์ที่เทียบเท่ากันฉันต้องการหลักฐานที่ใช้เฉพาะออโตมาตะ ดังนั้นฉันต้องแสดงให้เห็นว่าฮีปออโตมาตาสามารถจำลองโดยLBA s (หรือโมเดลที่เทียบเท่า) ฉันคาดหวังว่าการพิสูจน์จะทำงานคล้ายกับการแสดงออโตมาตาแบบกดลงที่ยอมรับภาษาย่อยที่มีความอ่อนไหวตามบริบท อย่างไรก็ตามหลักฐานทั้งหมดที่ฉันรู้ว่าทำงานโดย ใช้ไวยากรณ์ - นี่คือความจริงที่เห็นได้ชัดโดยนิยาม - หรือ ไม่คลุมเครือ (เช่นที่นี่ ) ปัญหาของฉันคือ PDA (resp. HA) สามารถมีรอบของ -transitions ที่อาจเขียนสัญลักษณ์ลงใน stack (resp. heap) LBA ไม่สามารถจำลองการวนซ้ำโดยพลการของลูปดังกล่าวได้ จากลำดับชั้นของชัมสกีที่ได้มาด้วยไวยากรณ์เรารู้ว่าεε\varepsilon ทุกภาษาที่ไม่มีบริบทมี - PDA ฟรีหรือεε\varepsilon LBA ที่จำลองขึ้นมาสามารถป้องกันการวนซ้ำ -ca บ่อยเกินไปεε\varepsilon โดยสังเขปนี่เป็นสิ่งที่ชัดเจน: วงจรดังกล่าวเขียนสัญลักษณ์อย่างอิสระจากอินพุตดังนั้นเนื้อหาสแต็ก (ฮีป) จะเก็บข้อมูลเป็นเส้นตรงตามความยาวของรอบเท่านั้น นอกจากนี้คุณยังไม่ได้มีวิธีการกำจัดสิ่งใหม่อีกครั้ง (ถ้าคุณต้องการ) อื่น ๆ อีกกว่าการใช้ -cycle ในสาระสำคัญรอบดังกล่าวไม่ได้มีส่วนร่วมในการจัดการกับอินพุตถ้าทำซ้ำหลาย ๆ ครั้งดังนั้นพวกเขาจึงไม่จำเป็นεε\varepsilon …

1
ทัวริงเป็นที่รู้จัก => นับได้
ฉันได้รับหลักฐานการไปจากตัวแจงนับไปยังเครื่องทัวริง (รันตัวแจงนับและดูว่ามันตรงกับอินพุต) แต่ฉันไม่เห็นว่าวิธีอื่นทำงานอย่างไร ตามบันทึกของฉันและหนังสือ (แนะนำทฤษฎีการคำนวณ - Sipser) เพื่อให้ได้ทัวริง enumerator จากเครื่องทัวริงเราเขียนชุดของตัวอักษรทั้งหมด จากนั้นคุณรัน TM บนอินพุตนี้หากยอมรับการพิมพ์ออกมาแทนที่ด้วยสตริงโฆษณาที่ซ้ำกันใหม่ ปัญหาที่ฉันมีอยู่แน่นอนว่านี่ต้องใช้ภาษาในการตัดสินใจ มิฉะนั้นอาจติดอยู่กับคำที่สามในวงวนไม่สิ้นสุดที่จะไม่ยอมรับหรือปฏิเสธและแน่นอนไม่พิมพ์ทั้งภาษา ฉันกำลังคิดถึงอะไร

2
เครื่องมือแก้เขาวงกตสายตาสั้นที่เหมาะสมที่สุด
ฉันหลงกลไปกับการสาธิตเขาวงกตของ Google Blockyและจดจำกฎเดิม ๆ ว่าหากคุณต้องการแก้ปัญหาเขาวงกตเพียงแค่ถือมือซ้ายไว้กับกำแพง มันใช้งานได้สำหรับเขาวงกตที่เชื่อมต่อง่าย ๆ และสามารถใช้งานได้โดยตัวแปลงสัญญาณไฟไนต์ จำกัด ให้หุ่นยนต์ของเราเป็นตัวแทนของทรานสดิวเซอร์โดยดำเนินการดังต่อไปนี้และสิ่งที่สังเกตได้: การดำเนินการ: ไปข้างหน้า ( ) เลี้ยวซ้าย ( ← ) เลี้ยวขวา ( → )↑↑\uparrow←←\leftarrow→→\rightarrow สิ่งที่สังเกตได้: กำแพงข้างหน้า ( ), ไม่มีกำแพงข้างหน้า ( ⊤ )⊥⊥\bot⊤⊤\top จากนั้นเราสามารถสร้างช่างแก้ตัวทางซ้ายมือเป็น (อภัยรูปวาดขี้เกียจของฉัน): การเห็นสิ่งที่สังเกตได้จะทำให้เราติดตามสถานะที่เหมาะสมออกไปจากรัฐในขณะดำเนินการกระทำที่เกี่ยวข้องกับขอบนั้น หุ่นยนต์นี้จะแก้เขาวงกตที่เชื่อมต่อทั้งหมดแม้ว่ามันอาจจะใช้เวลาหลังจากการตาย เราเรียกว่าหุ่นยนต์อื่นดีกว่าAถ้า:BBB AAA ใช้ขั้นตอนเพิ่มเติมอย่างเคร่งครัดในจำนวน จำกัด เท่านั้นเขาวงกตและBBB ใช้ขั้นตอนน้อยลงอย่างเคร่งครัด (โดยเฉลี่ยสำหรับตัวแปรที่น่าจะเป็น) กับจำนวนเขาวงกตที่ไม่ จำกัดBBB คำถามสองข้อของฉัน: มีหุ่นยนต์ จำกัด ที่ดีกว่าที่วาดไว้ข้างต้นหรือไม่? จะเกิดอะไรขึ้นถ้าเรายอมให้ตัวแปลงสัญญาณที่น่าจะเป็น มีหุ่นยนต์ จำกัด …

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