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

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

2
การค้นหาภาษาที่สร้างโดยไวยากรณ์ที่ไม่มีบริบท
นี่คือคำถามจากหนังสือ Dragon (ฉันขอโทษสำหรับความผิดพลาดในการแปลฉันไม่ได้มีเวอร์ชันภาษาอังกฤษอยู่ในมือ): ไวยากรณ์นี้สร้างด้วยภาษาใด S→ a SขS∣ b SS∣ ϵS→aSขS|ขSaS|εS \rightarrow a S b S \mid b S a S \mid \epsilon ฉันไม่รู้ว่าฉันควรทำอะไรที่นี่ คำจำกัดความในหนังสือเกี่ยวกับภาษาบอกว่าสิ่งนี้ (และมันก็สวยมากในบท): ภาษาคือชุดของคำทั้งหมดที่สามารถสร้างได้โดยทรีการแยกวิเคราะห์ใด ๆ ดังนั้นหากฉันต้องการแยกทรี "ใด ๆ " ออกจากไวยากรณ์นี้ฉันสามารถสร้างมันซ้ำ ๆ โดยใช้กฏสองข้อแรก ฉันค้นหาเล็กน้อยและได้รับความประทับใจว่าต้องใช้กฎทุกครั้ง แต่ฉันไม่แน่ใจ มันจะมีประโยชน์มากถ้ามีคนสามารถให้คำแนะนำในการแก้ปัญหาต่าง ๆ เหล่านี้ได้

1
แนวทาง“ CPS” ได้สร้างความเสียหายอย่างมากต่อประสิทธิภาพใน SML / NJ เหตุผลที่ต้องการ
ในความคิดเห็นต่อการเรียนรู้ F #: หนังสือที่ใช้ภาษาการเขียนโปรแกรมอื่นใดที่สามารถแปลเป็น F # เพื่อเรียนรู้แนวคิดการทำงานได้ Makariusระบุ: โปรดทราบว่าวิธีการ "CPS" ได้สร้างความเสียหายอย่างมากต่อประสิทธิภาพการทำงานใน SML / NJ รูปแบบการประเมินผลทางกายภาพของมันละเมิดสมมติฐานมากเกินไปที่สร้างขึ้นในฮาร์ดแวร์ หากคุณใช้แอปพลิเคชันสัญลักษณ์ขนาดใหญ่ของ SML เช่น Isabelle / HOL SML / NJ พร้อม CPS จะแสดงผลประมาณ ช้ากว่าโพลี / ML 100 เท่าด้วยสแต็กธรรมดา มีคนอธิบายเหตุผลนี้ได้ไหม (โดยเฉพาะอย่างยิ่งกับตัวอย่าง) มีความต้านทานไม่ตรงกันที่นี่หรือไม่?

1
อัลกอริทึมใดที่จะคำนวณตัวเลือกสูงสุดจากสองชุด
ด้วยเวกเตอร์จำนวนเต็มสองตัวที่มีความยาวไม่เท่ากันฉันจะกำหนดผลลัพธ์สูงสุดได้อย่างไรจากการเลือกจำนวนสูงสุดระหว่างคู่ที่สอดคล้องกันระหว่างเวกเตอร์สองตัวที่มีค่าศูนย์พิเศษแทรกลงในเวกเตอร์ที่สั้นกว่า ตัวอย่างเช่นให้พิจารณาเวกเตอร์สองตัวต่อไปนี้เป็นอินพุต: [8 1 4 5] [7 3 6] ตัวเลือกสำหรับการแทรกศูนย์และผลรวมคือ: [0 7 3 6] => Maximums: [8 7 4 6] => Sum is: 25 [7 0 3 6] => Maximums: [8 1 4 6] => Sum is: 19 [7 3 0 6] => Maximums: [8 3 4 6] => Sum …

6
เครื่องทัวริงสามารถเลือกภาษาของเครื่องด้วยภาษาที่ว่างเปล่าได้หรือไม่?
ให้ มีเครื่องทัวริง R ที่ตัดสินใจ (ฉันไม่ได้หมายถึงรู้จัก) ภาษา ?L ∅L∅={⟨M⟩∣M is a Turing Machine and L(M)=∅}.L∅={⟨M⟩∣M is a Turing Machine and L(M)=∅}.L_\emptyset = \{\langle M\rangle \mid M \text{ is a Turing Machine and }L(M)=\emptyset\}.L∅L∅L_\emptyset ดูเหมือนว่าเทคนิคเดียวกับที่ใช้ในการแสดงว่าควรทำงานที่นี่เช่นกัน{A∣A is a DFA and L(A)=∅}{A∣A is a DFA and L(A)=∅}\{A \mid A \text{ is a DFA and …

2
การจัดตารางเวลางานที่มีปัญหาคอขวด
ได้รับงานJ 1 , J 2 , . . , J n , แต่ละงานต้องใช้T i > 0 , T i ∈ Nเวลาให้เสร็จสมบูรณ์nnnJ1,J2,...,JnJ1,J2,...,JnJ_1,J_2,...,J_nTi>0,Ti∈NTi>0,Ti∈NT_i > 0, T_i \in N แต่ละงานจะต้องได้รับการประมวลผลล่วงหน้าและประมวลผลภายหลังโดยเครื่องเดียว M ที่สามารถจัดการงานได้ครั้งละ 1 งานเท่านั้นและเฟสทั้งสองต้องใช้เวลา 1 หน่วย หลังจากประมวลผลล่วงหน้าแล้วงานจะถูกส่งไปยังเครื่องที่มีกำลังไฟไม่ จำกัด (ที่สามารถจัดการกับงานได้ไม่ จำกัด จำนวน) และมันจะพร้อมในเวลาT iจากนั้นจะต้องส่ง ( ทันที ) ไปยังเครื่อง M อีกครั้งสำหรับการประมวลผลภายหลังJiJiJ_iTiTiT_i ปัญหาการตัดสินใจที่เกี่ยวข้องคือ: อินพุต:เวลาในการประมวลผลของงานN , จำนวนเต็มK …

1
ไม่สามารถแปลงจาก NFA เป็น DFA
ฉันมีปัญหาง่ายๆในการทำ DFA ซึ่งรับอินพุตทั้งหมดที่เริ่มต้นด้วยตัวอักษรคู่ (aa, bb) หรือลงท้ายด้วยตัวอักษรคู่ (aa, bb), ให้เป็นชุดตัวอักษรของ ภาษาที่กำหนดΣ={a,b}Σ={a,b}\Sigma =\{a, b\} ฉันพยายามที่จะแก้ปัญหาในทางอ้อมโดย: การสร้างการแสดงออกปกติ ทำให้ NFA ที่สอดคล้องกัน ใช้การสร้าง powerset เพื่ออนุมาน DFA การลดจำนวนสถานะใน DFA ให้น้อยที่สุด ขั้นตอนที่ 1: การแสดงออกปกติสำหรับปัญหาที่กำหนดคือ (ท่ามกลางผู้อื่นนับไม่ถ้วน): ((aa|bb)(a|b)*)|((a|b)(a|b)*(aa|bb)) ขั้นตอนที่ 2: NFAสำหรับการแสดงออกที่กำหนดคือ: (ที่มา: livefilestore.com ) ในรูปแบบตาราง NFA คือ: State Input:a Input:b ->1 2,5 3,5 2 4 - 3 - 4 …

1
ตั้งค่าอิสระบนกราฟสามเหลี่ยมลูกบาศก์
ฉันรู้ว่าชุดอิสระสูงสุดบนกราฟสามเหลี่ยมที่ไม่มีลูกบาศก์คือ NP-complete มันยังคงเป็นปัญหาที่สมบูรณ์หรือไม่ในกรณีที่เราต้องการชุดอิสระให้มีขนาดเท่ากัน ?| V| / 2|V|/2|V|/2 โดยพื้นฐานแล้วอินสแตนซ์ YES ของปัญหาชุดอิสระในปัญหากราฟสามเหลี่ยมแบบสามเหลี่ยมต้องมีโหนดแน่นอน เช่น NO มีชุดที่เป็นอิสระที่มีขนาดน้อยกว่า 2| V| / 2|V|/2|V|/2| V| / 2|V|/2|V|/2


1
การวิเคราะห์แบบ Asymptotic สำหรับตัวแปรสองตัว?
การวิเคราะห์เชิงเส้นกำกับ (big o, little o, theta ใหญ่, theta ใหญ่ ฯลฯ ) ถูกกำหนดไว้อย่างไรสำหรับฟังก์ชั่นที่มีตัวแปรหลายตัว? ฉันรู้ว่าบทความ Wikipedia มีหัวข้ออยู่ แต่ใช้สัญกรณ์ทางคณิตศาสตร์จำนวนมากซึ่งฉันไม่คุ้นเคย ฉันยังพบกระดาษต่อไปนี้: http://people.cis.ksu.edu/~rhowell/asymptotic.pdfอย่างไรก็ตามกระดาษนี้มีความยาวมากและให้การวิเคราะห์ที่สมบูรณ์ของการวิเคราะห์เชิง asymptotic แทนที่จะให้คำจำกัดความ การใช้สัญลักษณ์ทางคณิตศาสตร์บ่อยครั้งทำให้ยากที่จะเข้าใจ ใครสามารถให้คำจำกัดความของการวิเคราะห์เชิงเส้นกำกับโดยไม่มีเครื่องหมายทางคณิตศาสตร์ที่ซับซ้อน?

3
เป็นไปได้หรือไม่ที่จะตัดสินใจว่าอัลกอริทึมที่ให้มานั้นเหมาะสมที่สุดหรือไม่
มีอัลกอริทึมสำหรับปัญหาต่อไปนี้: ได้รับเครื่องทัวริงที่ตัดสินใจภาษา , มีเครื่องทัวริงตัดสินใจดังกล่าวว่า ? L M 2 L t 2 ( n ) = o ( t 1 ( n ) )M1M1M_1LLLM2M2M_2LLLt2(n)=o(t1(n))t2(n)=o(t1(n))t_2(n) = o(t_1(n)) ฟังก์ชั่นและเป็นเวลาทำงานที่เลวร้ายที่สุดของเครื่องจักรทัวริงและตามลำดับt 2 M 1 M 2t1เสื้อ1t_1t2เสื้อ2t_2M1M1M_1M2M2M_2 แล้วความซับซ้อนของอวกาศล่ะ?

3
หนังสืออัลกอริทึมในหัวข้อต่างๆ
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ฉันได้รับมอบหมายให้สร้างห้องสมุดหนังสือเกี่ยวกับอัลกอริทึมสำหรับ บริษัท ขนาดเล็กของเรา (ประมาณ 15 คน) งบประมาณมากกว่า 5k แต่น้อยกว่า 10k แน่นอนดังนั้นฉันสามารถซื้อหนังสือได้พอใช้ ทุกคนที่นี่มีอย่างน้อยปริญญาตรีใน CS หรือสาขาที่เกี่ยวข้องอย่างใกล้ชิดดังนั้นในขณะที่ฉันจะได้รับหนังสือเรียนพื้นฐานเช่น Cormen ฉันสนใจหนังสือที่ดีในหัวข้อขั้นสูง (ฉันจะได้รับเล่ม 4 ของ Knuth, BTW) รายการหัวข้อบางส่วนจะเป็น: ขั้นตอนวิธีการเรียงลำดับ อัลกอริธึมกราฟ อัลกอริธึมสตริง อัลกอริทึมแบบสุ่ม อัลกอริทึมแบบกระจาย อัลกอริทึม Combinatorial เป็นต้น โดยพื้นฐานแล้วฉันกำลังมองหาคำแนะนำที่ดีเกี่ยวกับหนังสือในหัวข้อที่สำคัญภายใน CS ที่เกี่ยวข้องกับอัลกอริทึมและโครงสร้างข้อมูล โดยเฉพาะอย่างยิ่งสิ่งที่นอกเหนือไปจากสิ่งที่ครอบคลุมโดยทั่วไปในชั้นเรียนอัลกอริทึมและโครงสร้างข้อมูลซึ่งเป็นส่วนหนึ่งของปริญญาตรีในโรงเรียนที่ดี ฉันรู้ว่าคำถามนั้นค่อนข้างคลุมเครือเนื่องจากฉันกำลังมองหาวัสดุที่มีประโยชน์โดยทั่วไป ซอฟต์แวร์ที่เราพัฒนานั้นส่วนใหญ่เป็นระบบที่จัดการกับข้อมูลจำนวนมาก อุดมคติก็คือการค้นหาสิ่งใดก็ตามที่จะครอบคลุมโครงสร้างและอัลกอริธึมเจ๋ง ๆ ล่าสุดที่คนส่วนใหญ่อาจไม่เคยได้ยินมาก่อน แก้ไข: นี่คือหนังสือเบื้องต้นที่ฉันคิดว่าฉันควรได้รับ: รู้เบื้องต้นเกี่ยวกับอัลกอริทึมโดย Cormen และคณะ การออกแบบอัลกอริทึมโดย Kleinberg, Tardos …

4
การค้นหาชุด "ลายนิ้วมือ"
สมมติว่าเรามี 10 คนแต่ละคนมีรายการหนังสือที่ชื่นชอบ สำหรับบุคคลที่ได้รับ X ฉันต้องการค้นหาชุดย่อยพิเศษของหนังสือของ X ที่ X ชื่นชอบโดย X เท่านั้นนั่นคือไม่มีบุคคลอื่นที่ชอบหนังสือทั้งหมดในชุดย่อยพิเศษของ X ฉันคิดว่าเซตย่อยพิเศษนี้เป็น "ลายนิ้วมือ" ที่ไม่ซ้ำกันสำหรับ X ฉันขอขอบคุณข้อเสนอแนะเกี่ยวกับวิธีการค้นหาชุดดังกล่าว (แม้ว่าสิ่งนี้จะอ่านได้เหมือนปัญหาการบ้าน แต่เกี่ยวข้องกับปัญหาในการวิจัยทางชีววิทยาที่ฉันพยายามแก้ไข)
11 algorithms  sets 

1
กำกับการค้นหายูเนี่ยน
พิจารณากราฟกำกับGGGที่หนึ่งสามารถเพิ่มขอบแบบไดนามิกและทำแบบสอบถามเฉพาะบางอย่าง ตัวอย่าง: ฟอเรสต์ disjoint-set พิจารณาชุดคำถามต่อไปนี้: arrow(u, v) equiv(u, v) find(u) คนแรกที่จะเพิ่มลูกศรจากกราฟที่สองตัดสินใจถ้ามึง↔ *วีคนสุดท้ายพบตัวแทนที่ยอมรับของชั้นสมมูลของ↔ * , เช่นR ( U )ดังกล่าวว่ายู↔ *วีหมายถึงR ( V ) = R ( U )u→vu→vu→vu↔∗vu↔∗vu↔^*v↔∗↔∗↔^*r(u)r(u)r(u)u↔∗vu↔∗vu↔^*vr(v)=r(u)r(v)=r(u)r(v)=r(u) มีความเป็นอัลกอริทึมที่รู้จักกันดีโดยใช้โครงสร้างข้อมูลป่าเคล็ดชุดดำเนินการคำสั่งเหล่านี้ในกึ่งคงตัดจำหน่ายซับซ้อนคือ(n)) หมายเหตุว่าในกรณีนี้จะดำเนินการใช้O(α(n))O(α(n))O(α(n))equivfind ตัวแปรที่ซับซ้อนมากขึ้น ตอนนี้ฉันสนใจปัญหาที่ซับซ้อนยิ่งขึ้นซึ่งทิศทางสำคัญ: arrow(u, v) confl(u, v) find(u) คนแรกที่จะเพิ่มลูกศรวินาทีตัดสินใจถ้ามีโหนดสามารถเข้าถึงได้จากทั้งและคือ←วี อันสุดท้ายควรส่งคืนออบเจคต์เช่นที่หมายถึงโดยที่ควรคำนวณได้ง่าย (เพื่อที่จะพูดคำนวณ) เป้าหมายคือการหาโครงสร้างข้อมูลที่ดีเพื่อให้การดำเนินการเหล่านี้รวดเร็วu→vu→vu→vwwwuuuvvvu→∗←∗vu→∗←∗vu→^*←^*vr(u)r(u)r(u)u→∗←∗vu→∗←∗vu→^*←^*vr(u)∙r(v)r(u)∙r(v)r(u) \bullet r(v)∙∙\bulletconfl รอบ กราฟสามารถมีรอบ ฉันไม่ทราบว่ามีวิธีในการคำนวณส่วนประกอบที่เชื่อมต่ออย่างมีประสิทธิภาพและเพิ่มขึ้นหรือไม่เพื่อพิจารณา DAG สำหรับปัญหาหลักเท่านั้น แน่นอนฉันจะขอบคุณวิธีแก้ปัญหาสำหรับ DAG ด้วย …

2
ลดความซับซ้อนของ n multichoose k
ฉันมีอัลกอริทึมแบบเรียกซ้ำที่มีความซับซ้อนของเวลาเทียบเท่ากับการเลือกองค์ประกอบ k จาก n ด้วยการทำซ้ำและฉันสงสัยว่าฉันจะได้รับนิพจน์โอใหญ่ที่ง่ายขึ้นหรือไม่ ในกรณีของฉันอาจมากกว่าและพวกมันเติบโตอย่างอิสระkkknnn โดยเฉพาะฉันคาดหวังว่าจะมีการแสดงออกที่ชัดเจนบางอย่าง สิ่งที่ดีที่สุดที่ฉันพบได้ก็คือการประมาณดังนั้นฉันจึงสามารถใช้มันได้ แต่ฉันสงสัยว่าฉันจะได้อะไรที่ดีกว่าO ( n ! ) ≈ O ( ( n / 2 )n)O(n!)≈O((n/2)n)O(n!) \approx O((n/2)^n) O ( ( n + k - 1k) )=O(?)O((n+k-1k))=O(?)O\left({{n+k-1}\choose{k}}\right) = O(?)

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

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