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

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

3
ตัวกำเนิดตัวเลขแบบหลอกทั้งหมดเป็นระยะหรือไม่?
ตัวกำเนิดตัวเลขแบบหลอกทั้งหมดเป็นระยะหรือไม่? หรือพวกเขาเป็นระยะ ๆ ในที่สุด? ฉันหมายถึงเป็นระยะ ๆ เช่นเดียวกับตัวเลขที่มีเหตุผลพวกเขาในที่สุดสร้างลำดับเป็นระยะ ... และการสุ่มหลอกหมายถึงอัลกอริทึม / การสร้างตัวเลขทางคณิตศาสตร์ของการสุ่ม ...

1
อัลกอริทึมโลภสามารถแก้ไขปัญหาการเปลี่ยนเหรียญได้เมื่อใด
ให้ชุดเหรียญที่มีค่าแตกต่างกันและค่า v คุณต้องการค้นหาจำนวนเหรียญที่น้อยที่สุดที่จำเป็นในการแทนค่า vc1,...,cnc1,...,cnc1, ... , cn เช่นสำหรับชุดเหรียญ 1,5,10,20 สิ่งนี้ให้ 2 เหรียญสำหรับผลรวม 6 และ 6 เหรียญสำหรับผลรวม 19 คำถามหลักของฉันคือเมื่อสามารถใช้กลยุทธ์โลภเพื่อแก้ปัญหานี้ได้อย่างไร คะแนนโบนัส: ข้อความนี้ไม่ถูกต้องธรรมดาหรือไม่ (จาก: จะทราบได้อย่างไรว่าอัลกอริทึมโลภเพียงพอสำหรับปัญหาการเปลี่ยนเหรียญขั้นต่ำหรือไม่ ) อย่างไรก็ตามบทความนี้มีข้อพิสูจน์ว่าหากอัลกอริทึมโลภใช้ได้กับค่า denom ที่ใหญ่ที่สุด + ค่า denom ที่ใหญ่เป็นอันดับสองมันก็ใช้ได้กับมันทั้งหมดและมันแสดงให้เห็นเพียงแค่ใช้อัลกอริธึมโลภเทียบกับอัลกอริธึม DP ที่เหมาะสมที่สุด http://www.cs.cornell.edu/~kozen/papers/change.pdf ps โปรดทราบว่าคำตอบในหัวข้อนั้นพังอย่างไม่น่าเชื่อ - นั่นคือเหตุผลที่ฉันถามคำถามใหม่

7
ทำไม A หมายถึง B จริงถ้า A เป็นเท็จและ B เป็นเท็จ
สำหรับฉันแล้วดูเหมือนว่า 'นัย' ในภาษาอังกฤษไม่ได้หมายถึงสิ่งเดียวกับตัวดำเนินการเชิงตรรกะ 'หมายถึง' ในทำนองเดียวกันกับคำว่า 'OR' ในกรณีส่วนใหญ่หมายถึง 'พิเศษหรือ' ในการใช้ภาษาของเราทุกวัน ลองมาสองตัวอย่าง: ถ้าวันนี้เป็นวันจันทร์พรุ่งนี้ก็เป็นวันอังคาร นี่คือความจริง แต่ถ้าเราพูดว่า: หากดวงอาทิตย์เป็นสีเขียวหญ้าก็เป็นสีเขียว นี่ก็ถือว่าเป็นเรื่องจริง ทำไม? 'ตรรกะ' ในภาษาอังกฤษตามธรรมชาติคืออะไร มันทำให้ฉันกลัว

3
อัลกอริธึมที่เร็วที่สุดสำหรับการค้นหาเส้นทางที่สั้นที่สุดทั้งหมดในกราฟคืออะไร?
ในกราฟที่ไม่มีการถ่วงน้ำหนักและไม่มีทิศทางด้วย vertices และ edge เช่นวิธีใดที่เร็วที่สุดในการค้นหาเส้นทางที่สั้นที่สุดทั้งหมดในกราฟ สามารถทำได้เร็วกว่า Floyd-Warshall ซึ่งเป็นแต่เร็วมากต่อการทำซ้ำหรือไม่?VVVEEE2V>E2V>E2V \gt EO(V3)O(V3)O(V^3) ถ้ากราฟนั้นถูกถ่วงน้ำหนักล่ะ?

1
จัดเรียงเป็นโปรแกรมเชิงเส้น
ปัญหาที่น่าประหลาดใจมีจำนวนลดลงอย่างเป็นธรรมชาติถึงการเขียนโปรแกรมเชิงเส้น (LP) ดูบทที่ 7จาก [1] สำหรับตัวอย่างเช่นการไหลของเครือข่ายการจับคู่แบบสองทางเกมแบบรวมศูนย์เส้นทางที่สั้นที่สุดรูปแบบของการถดถอยเชิงเส้นและการประเมินวงจร! เนื่องจากการประเมินวงจรลดการโปรแกรมเชิงเส้นปัญหาใด ๆ ในจะต้องมีสูตรการเขียนโปรแกรมเชิงเส้น ดังนั้นเราจึงมีอัลกอริทึมการเรียงลำดับ "ใหม่" ผ่านการลดขนาดให้เป็นโปรแกรมเชิงเส้น ดังนั้นคำถามของฉันคือPPP โปรแกรมเชิงเส้นคืออะไรที่จะเรียงลำดับของจำนวนจริง ?nnn เวลาในการทำงานของอัลกอริธึมการเรียงลำดับการลดและการแก้ปัญหาคืออะไร อัลกอริทึมโดย S. Dasgupta, C. Papadimitriou และ U. Vazirani (2006)

2
มีอัลกอริทึมที่มีประสิทธิภาพในการแก้ #SAT หรือไม่
ให้เป็นสูตรบูลีนซึ่งประกอบด้วยตัวดำเนินการ AND, OR และ NOT ปกติและตัวแปรบางตัว ผมอยากจะนับจำนวนของการมอบหมายงานที่น่าพอใจสำหรับB นั่นคือฉันต้องการค้นหาจำนวนการกำหนดค่าความจริงที่แตกต่างกันไปยังตัวแปรของBซึ่งBถือว่าค่าจริง ตัวอย่างเช่นสูตรa ∨ bมีการมอบหมายที่น่าพอใจสามรายการ ( ∨ ข) ∧ ( ค∨ ¬ ข)มีสี่ นี่คือปัญหา #SATBBBBBBBBBBBBa∨ba∨ba\lor b(a∨b)∧(c∨¬b)(a∨b)∧(c∨¬b)(a\lor b)\land(c\lor\lnot b) เห็นได้ชัดว่าการแก้ปัญหาที่มีประสิทธิภาพสำหรับปัญหานี้จะแสดงถึงวิธีแก้ปัญหาที่มีประสิทธิภาพสำหรับ SAT ซึ่งไม่น่าเป็นไปได้และในความเป็นจริงแล้วปัญหานี้คือ # P-complete และอาจยากกว่า SAT อย่างเคร่งครัด ดังนั้นฉันจึงไม่คาดหวังว่าโซลูชันที่รับประกันจะมีประสิทธิภาพ แต่เป็นที่ทราบกันดีว่ามันมีบางกรณีที่ค่อนข้างยากของ SAT เอง (ดูตัวอย่างที่Cheeseman 1991, " ปัญหาที่ยากจริงๆ คืออะไร" ) การค้นหาแบบสามัญที่ตัดทอนถึงแม้จะเป็นเลขชี้กำลังในกรณีที่แย่ที่สุดก็สามารถแก้ปัญหาได้อย่างมีประสิทธิภาพ วิธีการแก้ปัญหาแม้ในกรณีที่เลวร้ายที่สุด แต่จะมีประสิทธิภาพมากขึ้นในทางปฏิบัติ คำถามของฉันคือ: มีอัลกอริธึมใดที่ทราบแล้วซึ่งสามารถนับจำนวนการมอบหมายที่น่าพอใจของสูตรบูลีนทั่วไปได้อย่างรวดเร็วแม้ว่าอัลกอริทึมดังกล่าวต้องการเวลาแบบเอ็กซ์โพเนนเชียลในอินสแตนซ์ทั่วไปหรือไม่ มีอะไรดีกว่าอย่างเห็นได้ชัดกว่าการแจกแจงการมอบหมายที่เป็นไปได้ทุกครั้งหรือไม่

6
นิยามภาษาแบบวนซ้ำและนับซ้ำสำหรับคนธรรมดา
คำถามนี้ถูกย้ายจาก Theoretical Computer Science Exchange Exchange เพราะสามารถตอบได้ใน Computer Science Stack Exchange อพยพ 6 ปีที่แล้ว ฉันเจอคำจำกัดความของภาษาแบบเรียกซ้ำและนับซ้ำ แต่ฉันไม่เข้าใจว่ามันคืออะไร บางคนได้โปรดบอกฉันว่าพวกเขาอยู่ในคำง่ายๆ?

7
เริ่มเรียนรู้เกี่ยวกับทฤษฎีระบบกระจาย
อะไรคือวิธีที่ดีที่สุดที่ทุกคนสามารถทำได้เพื่อให้มีการแนะนำที่ดีเกี่ยวกับทฤษฎีระบบกระจายหนังสือหรือการอ้างอิงใด ๆ และหัวข้อควรได้รับการกล่าวถึงก่อนและมีข้อกำหนดเพื่อเริ่มการเรียนรู้ในหัวข้อนี้

3
การดึงเส้นทางที่สั้นที่สุดของกราฟแบบไดนามิก
ฉันกำลังศึกษาเส้นทางที่สั้นที่สุดในกราฟกำกับ มีอัลกอริธึมที่มีประสิทธิภาพมากมายสำหรับการค้นหาเส้นทางที่สั้นที่สุดในเครือข่ายเช่น dijkstra's หรือ bellman-ford's แต่ถ้ากราฟเป็นไดนามิก? โดยการพูดแบบไดนามิกฉันหมายความว่าเราสามารถแทรกหรือลบจุดยอดในระหว่างการดำเนินการของโปรแกรม ฉันพยายามที่จะหาขั้นตอนวิธีการที่มีประสิทธิภาพสำหรับการปรับปรุงเส้นทางที่สั้นที่สุดจากจุดสุดยอดทุกจุดสุดยอดอื่น ๆUหลังจากการใส่ขอบอีโดยไม่จำเป็นต้องเรียกใช้อัลกอริทึมเส้นทางที่สั้นที่สุดในกราฟใหม่อีกครั้ง ฉันจะทำสิ่งนี้ได้อย่างไร ขอบคุณล่วงหน้า.vvvuuueee หมายเหตุ:การเปลี่ยนแปลงสามารถทำได้หลังจากการวนซ้ำครั้งแรกของอัลกอริทึม หมายเหตุ [2]: ให้สองโหนดคือต้นทางและtเป้าหมาย ฉันต้องการค้นหาเส้นทางที่สั้นที่สุดระหว่างโหนดเหล่านี้ เมื่อกราฟมีการปรับปรุงฉันมีเพียงแค่การปรับปรุงπ ( s , T )ซึ่งเป็นเส้นทางที่สั้นที่สุดระหว่างsและเสื้อssstttπ(s,t)π(s,t)\pi(s,t)sssttt หมายเหตุ [3]:ฉันสนใจเฉพาะเคสใส่ขอบเท่านั้น ความหมายอย่างเป็นทางการ : ให้กราฟ ) กำหนดดำเนินการปรับปรุงเป็น 1) แทรกของขอบอีเพื่อEหรือ 2) การลบขอบ AA อีจากE วัตถุประสงค์คือการหาค่าใช้จ่ายของเส้นทางที่สั้นที่สุดของคู่ทั้งหมดอย่างมีประสิทธิภาพหลังจากการดำเนินการอัพเดท อย่างมีประสิทธิภาพเราหมายถึงอย่างน้อยก็ดีกว่าดำเนินการอัลกอริทึม All-Pairs-Shortest-Path เช่นอัลกอรึทึมของ Bellman-Ford หลังจากการดำเนินการอัพเดทแต่ละครั้งG=(V,E)G=(V,E)G = (V,E)eeeEEEeeeEEE แก้ไข:ด้านล่างมีปัญหาในเวอร์ชันที่ง่ายขึ้น: กราฟถ่วงน้ำหนักจะได้รับประกอบด้วยขอบทิศทางเดียวและสองจุดสำคัญsและเสื้อ ชุดของขอบสองทิศทางของผู้สมัครจะได้รับเช่นกัน ฉันจะต้องสร้างขอบเพื่อลดระยะทางจากไปทีG(V,E)G(V,E)G(V,E)ssstttCCC(u,v)∈C(u,v)∈C(u,v) \in Csssttt

4
บีเวอร์ไม่ว่างเป็นฟังก์ชั่นที่เติบโตเร็วที่สุดที่มนุษย์รู้จัก
คำถามนี้ถูกย้ายจาก Theoretical Computer Science Exchange Exchange เพราะสามารถตอบได้ใน Computer Science Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันเพิ่งมีคำถามที่น่าสนใจนี้ ฟังก์ชั่นที่เติบโตเร็วที่สุดที่มนุษย์รู้จักกันคืออะไร? มันเป็นช่องคลอดไม่ว่าง ? เรารู้ว่าฟังก์ชั่นเช่นx2x2x^2แต่ฟังก์ชั่นนี้เติบโตช้ากว่า2x2x2^xซึ่งจะเติบโตช้ากว่าx !x!x!ซึ่งจะเติบโตช้ากว่าxxxxx^x x จากนั้นเราสามารถรวมฟังก์ชั่นเพื่อให้มี( xx) !(xx)!(x^x)!ที่เติบโตเร็วกว่าxxxxx^xและอื่น ๆ จากนั้นเราก็มาถึงฟังก์ชั่นวนซ้ำเช่นฟังก์ชันของ Ackermann A ( x , x )A(x,x)A(x,x)ที่เติบโตเร็วกว่า( xx) !(xx)!(x^x)!. จากนั้นผู้คนถึงกับฟังก์ชั่นBeaver B ( x )B(x)B(x)ทำงานเร็วกว่าฟังก์ชั่นของ Ackermann ณ จุดนี้ฉันไม่เคยได้ยินเกี่ยวกับฟังก์ชั่นอื่น ๆ ที่เติบโตเร็วกว่าบีเวอร์ที่ยุ่ง มันหมายความว่าไม่มีฟังก์ชั่นอื่น ๆ ที่สามารถเติบโตได้เร็วกว่าบีเวอร์ที่ยุ่งหรือเปล่า? (นอกเหนือจากแฟกทอเรียลของB ( …

2
Logical Min-Cut NP-Complete หรือไม่
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Computer Science Stack Exchange อพยพ 7 ปีที่ผ่านมา นิยามปัญหา Logical Min Cut (LMC) สมมติว่าเป็นเดี่ยวชั่ง,และมีสองจุดของและสามารถเข้าถึงได้จากsการศึกษา LMC ปัญหาว่าเราสามารถทำให้ไม่สามารถเข้าถึงได้จากโดยการกำจัดของขอบบางส่วนของต่อไปนี้ข้อ จำกัด ต่อไปนี้:G=(V,E)G=(V,E)G = (V, E)ssstttVVVtttssstttsssGGG จำนวนของขอบที่ถูกลบจะต้องน้อยที่สุด เราไม่สามารถลบขอบทางออกทุกจุดยอดของใด ๆ(กล่าวคือไม่มีจุดยอดที่มีขอบขาออกสามารถลบขอบขาออกทั้งหมดได้)GGG ข้อ จำกัด ที่สองนี้เรียกว่าการลบแบบลอจิคัล ดังนั้นเราจึงมองหาตรรกะกำจัดน้อยที่สุดของขอบของบางดังกล่าวว่าจะไม่สามารถเข้าถึงได้จากsGGGtttsss ความพยายามในการแก้ไขปัญหา หากเราเพิกเฉยต่อข้อ จำกัด การกำจัดแบบลอจิคัลของปัญหา LMC มันจะเป็นปัญหาขั้นต่ำในการขุดกราฟที่ไม่ได้ถ่วงดังนั้นมันจะสามารถแก้ไขได้แบบพหุนาม (ทฤษฎีบทสูงสุดการไหลแบบไม่ไหล)GGG ถ้าเราไม่สนใจข้อ จำกัด น้อยที่สุดของการกำจัดปัญหา LMC ก็จะแก้ปัญหาได้ polynomially อีกครั้งใน DAG: การหาจุดสุดยอดดังกล่าวว่าสามารถเข้าถึงได้จากและไม่สามารถเข้าถึงได้จากkแล้วพิจารณาเส้นทางซึ่งเป็นเส้นทางจากพลเพื่อkตอนนี้พิจารณาเส้นทางเป็น subgraph ของ : …

1
วิธีการพิสูจน์ความถูกต้องของอัลกอริทึมแบบสุ่ม?
ฉันมีสองวิธีในการสร้างรายการสิ่งของตามลำดับแบบสุ่มและต้องการตรวจสอบว่ามีความยุติธรรมเท่ากันหรือไม่ วิธีแรกที่ฉันใช้คือการสร้างรายการทั้งหมดขององค์ประกอบแล้วทำการสับเปลี่ยนมัน (พูดสับเปลี่ยน Fisher-Yates) วิธีที่สองเป็นวิธีการวนซ้ำซึ่งเก็บรายการที่สับในทุกการแทรก ในโค้ดหลอกฟังก์ชันการแทรกคือ: insert( list, item ) list.append( item ) swap( list.random_item, list.last_item ) ฉันสนใจที่จะแสดงความเป็นธรรมของการสับคันนี้โดยเฉพาะ ข้อดีของอัลกอริทึมนี้ซึ่งใช้อยู่ก็เพียงพอแล้วแม้ว่ามันจะไม่ยุติธรรมก็ตาม ในการตัดสินใจว่าฉันต้องการวิธีประเมินความเป็นธรรมของมัน แนวคิดแรกของฉันคือฉันต้องคำนวณพีชคณิตทั้งหมดที่เป็นไปได้ด้วยวิธีนี้เทียบกับการเรียงสับเปลี่ยนทั้งหมดที่เป็นไปได้สำหรับชุดของความยาวสุดท้าย ฉันสูญเสียนิดหน่อย แต่วิธีคำนวณพีชคณิตที่เกิดจากอัลกอริทึมนี้ ฉันยังไม่แน่ใจว่านี่เป็นวิธีที่ดีที่สุดหรือง่ายที่สุด

5
ทำไมคนที่มีสมรรถภาพร่างกายต่ำจึงมีโอกาสรอดชีวิตคนรุ่นต่อไป
ขณะนี้ฉันกำลังอ่านและดูเกี่ยวกับอัลกอริทึมทางพันธุกรรมและฉันคิดว่ามันน่าสนใจมาก (ฉันไม่ได้มีโอกาสศึกษาในขณะที่ฉันอยู่ที่มหาวิทยาลัย) ฉันเข้าใจว่าการกลายพันธุ์ขึ้นอยู่กับความน่าจะเป็น (การสุ่มเป็นรากฐานของวิวัฒนาการ) แต่ฉันไม่เข้าใจว่าทำไมการเอาชีวิตรอดจึงเป็นเช่นนั้น จากสิ่งที่ฉันเข้าใจบุคคลที่IIIมีฟิตเนสF(i)F(i)F(i)เช่นสำหรับบุคคลอีกคนที่JJJมีฟิตเนสเรามีจากนั้นมีโอกาสดีกว่าF(j)F(j)F(j)F(i)>F(j)F(i)>F(j)F(i) > F(j)IIIJJJเพื่อความอยู่รอด เพื่อรุ่นต่อไป ความน่าจะเป็นหมายความว่าJJJ อาจอยู่รอดและIII อาจไม่ (กับ "โชคร้าย") ฉันไม่เข้าใจว่าทำไมสิ่งนี้ถึงดีเลย? ถ้าIIIจะอยู่รอดสิ่งที่เลือกไว้เสมอสิ่งที่จะผิดพลาดในอัลกอริทึม? ฉันเดาว่าอัลกอริทึมจะคล้ายกับอัลกอริทึมโลภ แต่ฉันไม่แน่ใจ

3
อะไรคือฟังก์ชั่นฉาก (แนวความคิด)?
ในบทความ CACM ที่ผ่านมา [1] ผู้เขียนนำเสนอการดำเนินงานสำหรับฟังก์ชั่นการจัดฉาก พวกเขาใช้คำศัพท์ราวกับว่าเป็นที่รู้จักกันดีและไม่มีการอ้างอิงใด ๆ ที่ดูเหมือนเป็นการแนะนำที่ชัดเจน พวกเขาให้คำอธิบายสั้น ๆ (เปลี่ยนการเน้นของฉันและหมายเลขอ้างอิงเปลี่ยนเป็น 22 ในต้นฉบับ) ในบริบทของการสร้างโปรแกรมการเขียนโปรแกรมแบบหลายขั้นตอน (MSP, การแสดงละครสั้น ๆ ) ที่จัดตั้งขึ้นตาม Taha และ Sheard [2] ช่วยให้โปรแกรมเมอร์อย่างชัดเจนการประเมินผลความล่าช้าของการแสดงออกโปรแกรมขั้นตอนภายหลัง (ดังนั้นการแสดงละครการแสดงออก) ขั้นตอนปัจจุบันได้อย่างมีประสิทธิภาพทำหน้าที่เป็นตัวสร้างรหัสที่ประกอบด้วย (และอาจดำเนินการ) โปรแกรมของขั้นตอนต่อไป อย่างไรก็ตาม Taha และ Sheard เขียน (เน้นที่เหมือง): โปรแกรมหลายขั้นตอนเป็นโปรแกรมที่เกี่ยวข้องกับการสร้างการรวบรวมและการประมวลผลโค้ดทั้งหมดที่อยู่ในกระบวนการเดียวกัน หลายภาษาแสดงโปรแกรมหลายขั้นตอน การจัดเตรียมและการเขียนโปรแกรมแบบหลายขั้นตอนจึงตอบสนองความต้องการโซลูชันทั่วไปที่ไม่ต้องจ่ายค่าโสหุ้ยการแปลขณะใช้งาน พวกเขามากกว่าที่จะอ้างถึงการอ้างอิงหลายงานที่ถูกกล่าวหาว่าแสดงให้เห็นว่าการแสดงละครมีประสิทธิภาพซึ่งแสดงให้เห็นว่าแนวคิดนั้นเก่ากว่า พวกเขาไม่ได้ให้การอ้างอิงสำหรับคำนั้น ๆ ข้อความเหล่านี้ดูเหมือนจะเป็นมุมฉากถ้าไม่ขัดแย้ง; บางทีสิ่งที่ Rompf และ Odersky เขียนเป็นแอพพลิเคชั่นที่ Taha และ Sheard เสนอ …

3
เงื่อนไขสำหรับ NFA สำหรับ DFA ที่เทียบเท่าจะมีขนาดสูงสุดได้อย่างไร
เรารู้ว่า DFA นั้นเทียบเท่ากับ NFA ในอำนาจการแสดงออก นอกจากนี้ยังมีอัลกอริทึมที่รู้จักกันสำหรับการแปลง NFA เป็น DFA (โชคไม่ดีที่ตอนนี้ฉันรู้จักนักประดิษฐ์ของอัลกอริทึมนั้น) ซึ่งในกรณีที่เลวร้ายที่สุดทำให้เรามีสถานะหาก NFA ของเรามีสถานะ2S2S2^SSSS คำถามของฉันคือ: สิ่งที่กำหนดสถานการณ์กรณีที่เลวร้ายที่สุด? นี่คือการถอดความของอัลกอริทึมในกรณีที่มีความกำกวม: ให้A = ( Q , Σ , δ, คิว0, F)A=(Q,Σ,δ,Q0,F)A = (Q,\Sigma,\delta,q_0,F)เป็น NFA เราสร้าง DFA A'= ( Q', Σ , δ', คิว'0, F')A'=(Q',Σ,δ',Q0',F')A' = (Q',\Sigma,\delta',q'_0,F')โดยที่ Q'= P( Q )Q'=P(Q)Q' = \mathcal{P}(Q) , F'= { …

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