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

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

1
ฉันจะแปลงเครื่องทัวริงให้จดจำภาษาเป็นไวยากรณ์ที่ไม่ จำกัด ได้อย่างไร
จากบทความ Wikipedia นี้ไวยากรณ์ที่ไม่ จำกัด นั้นเทียบเท่ากับเครื่องจักรทัวริง บทความบันทึกว่าฉันสามารถแปลงเครื่องทัวริงให้เป็นไวยากรณ์ที่ไม่ จำกัด แต่แสดงให้เห็นเพียงวิธีการแปลงไวยากรณ์เป็นเครื่องทัวริง ฉันจะทำอย่างนั้นและแปลงเครื่องทัวริงให้ตระหนักถึงภาษาเป็นไวยากรณ์ที่ไม่ จำกัด ได้อย่างไร ฉันได้ลองเปลี่ยนกฎการเปลี่ยนเป็นกฎไวยากรณ์ แต่เครื่องทัวริงสามารถกำหนดค่าสถานะที่แตกต่างกันมากมายเช่นกัน ...LLL

1
การทำงานของอัลกอริทึมของ Ukkonen ขึ้นอยู่กับขนาดตัวอักษรอย่างไร
ฉันกังวลกับคำถามเกี่ยวกับเวลาที่ใช้ในการทำงานแบบไม่แสดงอาการของอัลกอริทึมของ Ukkonenซึ่งอาจเป็นอัลกอริทึมที่ได้รับความนิยมมากที่สุดสำหรับการสร้างต้นไม้ต่อท้ายในเวลาเชิงเส้น (?) นี่คือการอ้างอิงจากหนังสือ "อัลกอริทึมในสตริงต้นไม้และลำดับ" โดย Dan Gusfield (ส่วน 6.5.1): "... อัลกอริธึมAho-Corasick, Weiner, Ukkonenและ McCreight นั้นต้องการพื้นที่หรือเวลาต้องถูกแทนที่ด้วยค่าต่ำสุดของและ "Θ(m|Σ|)Θ(m|Σ|)\Theta(m|\Sigma|)O(m)O(m)O(m)O(mlogm)O(mlog⁡m)O(m \log m)O(mlog|Σ|)O(mlog⁡|Σ|)O(m \log|\Sigma|) [คือความยาวสตริงและคือขนาดของตัวอักษร]mmmΣΣ\Sigma ฉันไม่เข้าใจว่าทำไมถึงเป็นจริง พื้นที่:ดีในกรณีที่เราเป็นตัวแทนของสาขาออกจากโหนดใช้อาร์เรย์ขนาดแล้วแน่นอนเราจบลงด้วยการใช้พื้นที่ อย่างไรก็ตามเท่าที่ฉันเห็นมันเป็นไปได้ที่จะจัดเก็บกิ่งไม้โดยใช้ตารางแฮช (เช่นพจนานุกรมใน Python) จากนั้นเราจะมีเฉพาะตัวชี้เก็บไว้ในตารางแฮชทั้งหมด (เนื่องจากมีขอบในต้นไม้) ในขณะที่ยังคงสามารถเข้าถึงโหนดลูกในเวลาเร็วที่สุด เช่นเดียวกับเมื่อใช้อาร์เรย์Θ(|Σ|)Θ(|Σ|)\Theta(|\Sigma|)Θ(m|Σ|)Θ(m|Σ|)\Theta(m|\Sigma|)Θ(m)Θ(m)\Theta(m)Θ(m)Θ(m)\Theta(m)O(1)O(1)O(1) เวลา : ดังกล่าวข้างต้นโดยใช้ตารางแฮชช่วยให้เราสามารถเข้าถึงสาขาขาออกของโหนดใด ๆ ในเวลา ตั้งแต่ขั้นตอนวิธี Ukkonen ต้องใช้การดำเนินงาน (รวมถึงการเข้าถึงโหนดเด็ก) เวลาการทำงานโดยรวมแล้วจะเป็นยัง(เมตร)O(1)O(1)O(1)O(m)O(m)O(m)O(m)O(m)O(m) ฉันจะขอบคุณคุณเป็นอย่างมากสำหรับคำแนะนำใด ๆ ว่าทำไมฉันถึงเข้าใจผิดในข้อสรุปของฉันและทำไม Gusfield ถึงถูกต้องเกี่ยวกับการพึ่งพาอัลกอริทึมของ Ukkonen ในตัวอักษร

4
สภาพแวดล้อมรันไทม์สามารถตรวจจับลูปไม่สิ้นสุดได้หรือไม่
เป็นไปได้หรือไม่ที่สภาพแวดล้อมรันไทม์สามารถตรวจจับลูปไม่สิ้นสุดและหยุดกระบวนการที่เกี่ยวข้องในภายหลังหรือจะใช้ตรรกะดังกล่าวเทียบเท่ากับการแก้ปัญหาการหยุดชะงักหรือไม่ สำหรับวัตถุประสงค์ของคำถามนี้ฉันกำหนด "infinite loop" เพื่อหมายถึงชุดคำสั่งและข้อมูลสแต็คเริ่มต้น / กองที่เกี่ยวข้องซึ่งเมื่อดำเนินการแล้วให้ส่งคืนกระบวนการกลับสู่สถานะเดิม (รวมถึงข้อมูล) เหมือนเดิม เริ่มการวนซ้ำไม่สิ้นสุด (กล่าวอีกนัยหนึ่งโปรแกรมที่สร้างการขยายทศนิยมแบบไม่มีกำหนดระยะยาวของ pi จะไม่ "ติด" ใน "infinite loop" เนื่องจากในการวนซ้ำทุกครั้งจะมี pi จำนวนมากขึ้นในหน่วยความจำที่เกี่ยวข้อง) (พอร์ตจาก/programming//q/16250472/1858225 )

2
กฎ 110 ทัวริงสมบูรณ์อย่างไร
ฉันได้อ่านหน้าวิกิพีเดียสำหรับกฎ 110ในออโตมาตาเซลลูลาร์แล้วและฉันรู้ว่ามันทำงานได้อย่างไร (ชุดของกฎตัดสินใจที่จะวาด 1 หรือ 0 ถัดไป) ฉันเพิ่งอ่านว่าทัวริงสมบูรณ์ แต่ฉันไม่สามารถเข้าใจได้ว่าคุณจะ 'โปรแกรม' ใน 'กฎ 110' อย่างไร

2
ชุดของเครื่องจักรทัวริงที่หยุดในขั้นตอนไม่เกิน 50 ขั้นสำหรับอินพุตทั้งหมดสามารถตัดสินใจได้หรือไม่?
Let\} ฉันต้องตัดสินใจว่าFสามารถตัดสินใจได้หรือนับซ้ำได้ซ้ำ ฉันคิดว่ามันตัดสินได้ แต่ฉันไม่รู้จะพิสูจน์มันได้อย่างไรF= { ⟨ M⟩ : M เป็น TM ซึ่งจะหยุดสำหรับทุกอินพุตที่มากที่สุด 50 ขั้นตอน}F={⟨M⟩:M is a TM which stops for every input in at most 50 steps}F = \{⟨M⟩:\text{M is a TM which stops for every input in at most 50 steps}\} ความคิดของฉัน ส่วน "50 ขั้นตอน" นี้จะเปลี่ยนสัญลักษณ์Rให้ฉันทันที หากเป็นข้อมูลที่เฉพาะเจาะจงก็จะสามารถตัดสินใจได้ อย่างไรก็ตามที่นี่มีไว้สำหรับทุกอินพุต การตรวจสอบมันสำหรับปัจจัยการผลิตที่ไม่มีที่สิ้นสุดทำให้ฉันคิดว่าเป็นปัญหาร่วม-RE …

2
แนวคิดทั่วไปในการคูณ Karatsuba, Gauss และ Strassen
ตัวตนที่ใช้ในอัลกอริทึมการคูณโดย Karatsuba (จำนวนเต็ม) เกาส์ (จำนวนเชิงซ้อน) Strassen (เมทริกซ์) ดูเหมือนจะเกี่ยวข้องกันมาก มีกรอบ / บทสรุปทั่วไปที่เป็นนามธรรมหรือไม่?

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

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

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

5
ชุดอิสระสูงสุดของกราฟแบบสองทาง
ฉันพยายามหากราฟอิสระชุดสูงสุดของ Biparite ฉันพบสิ่งต่อไปนี้ในบางบันทึกย่อ"13 พฤษภาคม 1998 - มหาวิทยาลัยวอชิงตัน - CSE 521 - การประยุกต์ใช้งานของเครือข่ายไหล" : ปัญหา: ได้รับการฝ่ายกราฟG = ( U, โวลต์, E)G=(U,V,E)G = (U,V,E)หาชุดอิสระยู'∪ V'U′∪V′U' \cup V'ซึ่งเป็นขนาดใหญ่ที่สุดเท่าที่เป็นไปได้ที่ยู'⊆ คุณU′⊆UU' \subseteq UและV'⊆ VV′⊆VV' \subseteq V V ชุดเป็นอิสระหากไม่มีขอบของEEEระหว่างองค์ประกอบของชุด วิธีการแก้: สร้างกราฟการไหลในจุดยู∪ V∪ { s , t }U∪V∪{s,t}U \cup V \cup \{s,t\} } สำหรับแต่ละขอบ(u,v)∈E(u,v)∈E(u,v) \in Eมีขอบจุอนันต์จากuuuจะ วีvvvสำหรับแต่ละu∈Uu∈Uu …

4
ใช้สูบน้ำเพื่อพิสูจน์บทแทรกภาษา
ฉันพยายามที่จะใช้สูบน้ำแทรกที่จะพิสูจน์ว่าไม่ปกติL = { ( 01 )ม.2ม.∣ m ≥ 0 }L={(01)m2m∣m≥0}L = \{(01)^m 2^m \mid m \ge0\} นี่คือสิ่งที่ฉันได้จนถึง: สมมติเป็นปกติและช่วยให้หน้ามีความยาวสูบน้ำดังนั้นW = ( 01 ) หน้า2หน้า พิจารณาการสลายตัวของปั๊มใด ๆw = x y zเช่นนั้น | y | > 0และ| x y | ≤ PLLLพีppw = ( 01 )พี2พีw=(01)p2pw = (01)^p 2^pw = x yZw=xyzw = …

3
เส้นแบ่งคะแนนสองชุด
หากมีวิธีการระบุว่าจุดสองชุดสามารถคั่นด้วยเส้นได้หรือไม่? เรามีสองชุดของจุดAAAและBBBหากมีเส้นที่แยกAAAและBBBเช่นนั้นจุดทั้งหมดของAAAและเท่านั้นAAAที่ด้านหนึ่งของเส้นและจุดทั้งหมดของBBBและเพียงBBBด้านอื่น ๆ อัลกอริธึมที่ไร้เดียงสาที่สุดที่ฉันพบคือการสร้างรูปหลายเหลี่ยมนูนสำหรับAAAและBBBและทดสอบเพื่อหาจุดตัด ดูเวลาที่ความซับซ้อนของเวลาสำหรับสิ่งนี้ควรเป็นO(nlogh)O(nlog⁡h)O(n\log h)สำหรับการสร้างรูปหลายเหลี่ยมนูน จริงๆแล้วฉันไม่ได้คาดหวังการปรับปรุงใด ๆ ในเรื่องความซับซ้อนของเวลาฉันไม่แน่ใจว่ามันจะสามารถปรับปรุงได้เลย แต่อย่างน้อยก็ควรมีวิธีที่สวยงามกว่านี้ในการพิจารณาว่ามีเส้นดังกล่าวหรือไม่

3
วงกลมล้อมรอบสูงสุดของรัศมีที่กำหนด
ฉันพยายามหาวิธีแก้ไขปัญหาต่อไปนี้: ให้ชุดของจุดและรัศมีค้นหาจุดศูนย์กลางของวงกลมเช่นวงกลมที่มีจำนวนคะแนนสูงสุดจากชุด เวลาทำงานควรจะ2)SSSrrrO(n2)O(n2)O(n^2) ตอนแรกมันดูเหมือนจะเป็นสิ่งที่คล้ายกับปัญหาวงกลมล้อมรอบขนาดเล็กที่สุดที่สามารถแก้ไขได้ใน2) ความคิดคือการตั้งศูนย์โดยพลการและล้อมรอบทุกจุดของส ถัดไปทีละขั้นตอนแทนที่วงกลมเพื่อสัมผัสจุดซ้าย / ขวาสุดและลดขนาดวงกลมไปยังรัศมีที่กำหนดชัดเจนว่านี่จะไม่ทำงานO(n2)O(n2)O(n^2)SSS

1
การตัดแต่งกิ่งเบต้าอัลฟา
ฉันกำลังมองหาอัลกอริทึมที่มีประสิทธิภาพซึ่งช่วยให้ฉันสามารถประมวลผลแผนผังการค้นหาขนาดเล็กของหมากรุกด้วยการตัดแบบอัลฟาเบต้าบนสถาปัตยกรรมแบบกระจาย อัลกอริทึมที่ฉันพบ (PVS, YBWC, DTS ดูด้านล่าง) ทั้งหมดค่อนข้างเก่า (1990 เป็นรุ่นล่าสุด) ฉันคิดว่ามีความก้าวหน้าที่สำคัญมากมายตั้งแต่นั้นมา มาตรฐานปัจจุบันในสาขานี้คืออะไร? นอกจากนี้โปรดชี้แนะฉันให้อธิบายคำอธิบายของ DTS ที่งี่เง่าเพราะฉันไม่สามารถเข้าใจได้จากงานวิจัยที่ฉันได้อ่าน อัลกอริทึมดังกล่าวข้างต้น: PVS: การแยกการแปรผันของหลักการ YBWC: Young Brothers Wait Concept DTS: การแยกต้นไม้แบบไดนามิก ทุกคนจะกล่าวถึงที่นี่

2
กราฟ unipathic สามารถมีได้กี่ขอบ
กราฟ unipathic เป็นกราฟกำกับที่มีเส้นทางที่ง่ายที่สุดอย่างใดอย่างหนึ่งจากจุดสุดยอดหนึ่งไปยังจุดสุดยอดอื่น ๆ กราฟ Unipathic สามารถมีรอบ ตัวอย่างเช่นรายการที่เชื่อมโยงเป็นทวีคูณ (ไม่ใช่แบบวงกลม!) เป็นกราฟแบบ unipathic; ถ้ารายการมีองค์ประกอบกราฟมีn - 1รอบของความยาว 2 รวมเป็น2 ( n - 1 )nnnn - 1n−1n-12 ( n - 1 )2(n−1)2(n-1) จำนวนขอบสูงสุดในกราฟ unipathic ที่มีจุดยอดคืออะไร ขอบเขตแบบเชิงเส้นกำกับจะทำ (เช่นO ( n )หรือΘ ( n 2 ) )nnnO ( n )O(n)O(n)Θ ( n2)Θ(n2)\Theta(n^2) แรงบันดาลใจจากการค้นหาเส้นทางที่สั้นที่สุดในกราฟ unipathic ชั่งน้ำหนัก ; …

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