คำถามติดแท็ก ds.algorithms

คำถามเกี่ยวกับคำแนะนำที่กำหนดไว้อย่างดีสำหรับการทำงานให้สำเร็จและการวิเคราะห์ที่เกี่ยวข้องในแง่ของเวลา / หน่วยความจำ / ฯลฯ

3
มีขั้นตอนวิธีการไหลของกระแสสูงสุดที่ใช้งานได้จริงหรือไม่?
สำหรับปัญหาการไหลสูงสุดดูเหมือนว่าจะมีอัลกอริธึมที่ซับซ้อนจำนวนมากโดยมีการพัฒนาอย่างน้อยหนึ่งรายการเมื่อเร็ว ๆ นี้เมื่อปีที่แล้ว Maxของ Orlin ไหลในเวลา O (mn) หรือดีกว่าให้อัลกอริทึมที่ทำงานใน O (VE) ในทางกลับกันอัลกอริทึมที่ฉันเห็นบ่อยที่สุดคือการใช้งาน (ฉันไม่ได้อ้างว่าได้ทำการค้นหาอย่างละเอียดแล้วนี่เป็นเพียงการสังเกตอย่างไม่เป็นทางการ): Edmonds-Karp: ,O(VE2)O(VE2)O(VE^2) Push-relabel: หรือO ( V 3 )โดยใช้การเลือกจุดสุดยอด FIFOO(V2E)O(V2E)O(V^2 E)O(V3)O(V3)O(V^3) Dinic ของอัลกอริทึม: )O(V2E)O(V2E)O(V^2 E) อัลกอริธึมที่มีเวลาทำงานเชิงซีมโทติคที่ดีกว่านั้นไม่สามารถใช้ได้จริงกับขนาดของปัญหาในโลกแห่งความเป็นจริงหรือไม่? นอกจากนี้ฉันเห็นว่า "ต้นไม้แบบไดนามิก" มีส่วนเกี่ยวข้องในอัลกอริทึมค่อนข้างน้อย เหล่านี้เคยใช้ในทางปฏิบัติหรือไม่ หมายเหตุ: คำถามนี้ถูกถามในตอนแรกเกี่ยวกับการล้นสแต็คที่นี่แต่ฉันบอกว่ามันจะดีกว่าที่นี่ แก้ไข : ฉันถามคำถามที่เกี่ยวข้องกับ cs.stackexchangeโดยเฉพาะเกี่ยวกับอัลกอริทึมที่ใช้ต้นไม้แบบไดนามิก (หรือที่รู้จักในชื่อ link-cut trees) ซึ่งอาจเป็นที่สนใจสำหรับผู้ที่ติดตามคำถามนี้

10
อัลกอริทึมที่ยอดเยี่ยมการเรียนรู้ของเครื่องและไม่มีพีชคณิตเชิงเส้น
ฉันสอนหลักสูตรอัลกอริทึมขั้นสูงและต้องการรวมบางหัวข้อที่เกี่ยวข้องกับการเรียนรู้ของเครื่องซึ่งเป็นที่สนใจของนักเรียนของฉัน ด้วยเหตุนี้ฉันต้องการฟังความคิดเห็นของผู้คนเกี่ยวกับผลลัพธ์อัลกอริทึมที่น่าสนใจที่สุดในการเรียนรู้ของเครื่อง ข้อ จำกัด ที่อาจเกิดขึ้นได้ยากคือนักเรียนจะไม่เคยมีความรู้มาก่อนเกี่ยวกับพีชคณิตเชิงเส้นหรือหัวข้อหลักอื่น ๆ ในการเรียนรู้ของเครื่อง นี่คือการกระตุ้นให้พวกเขาเกี่ยวกับหัวข้อและเพื่อให้พวกเขารู้ว่า ML เป็นพื้นที่การวิจัยที่น่าตื่นเต้นสำหรับผู้เชี่ยวชาญด้านอัลกอริทึม แก้ไข: นี่เป็นหลักสูตรระดับปริญญาตรีปีสุดท้าย (เนื่องจากเราไม่มีหลักสูตรระดับบัณฑิตศึกษาในสหราชอาณาจักรเป็นหลัก) พวกเขาจะทำอย่างน้อยหนึ่งอัลกอริธึมพื้นฐานหลักสูตรล่วงหน้าและทำได้ดีในการเลือกหลักสูตรติดตามผลขั้นสูง หลักสูตรปัจจุบันของหลักสูตรขั้นสูงมีหัวข้อต่าง ๆ เช่นการแฮ็กที่สมบูรณ์แบบตัวกรอง Bloom ต้นไม้ Van Emde Boas โปรแกรมเชิงเส้นประมาณ อัลกอริธึมสำหรับปัญหา NP-hard เป็นต้นฉันไม่ได้ตั้งใจจะใช้เวลาบรรยายมากกว่าหนึ่งครั้งใน ML แต่ถ้ามีบางอย่างที่เกี่ยวข้องกับทั้งอัลกอริทึมและ ML อย่างแน่นอนก็อาจรวมอยู่ด้วย

10
ตัวแบบขนานปัจจุบันสำหรับการคำนวณ
ปี 1980 ก่อให้เกิดทั้งรถเข็นและBSPรูปแบบของการคำนวณแบบขนาน ดูเหมือนว่าความมั่งคั่งของทั้งสองรุ่นอยู่ในช่วงปลายยุค 80 และต้นยุค 90 พื้นที่เหล่านี้ยังคงทำงานอยู่ในแง่ของการวิจัยสำหรับอัลกอริทึมแบบขนานหรือไม่ มีรุ่นที่ใหม่กว่าที่ซับซ้อนกว่าสำหรับการคำนวณแบบขนานหรือไม่? รุ่นทั่วไปยังอยู่ในสมัยหรือนักวิจัยพยายามที่จะเชี่ยวชาญกับ GPGPU หรือการคำนวณตาม Cloud มาในแฟชั่น?

1
การค้นหาเหรียญที่มีอคติโดยใช้การโยนเหรียญสักสองสาม
ปัญหาต่อไปนี้เกิดขึ้นระหว่างการวิจัยและทำความสะอาดอย่างน่าประหลาดใจ: คุณมีแหล่งที่มาของเหรียญ เหรียญแต่ละอันมีอคติกล่าวคือความน่าจะเป็นที่มันตกลงบน "หัว" สำหรับแต่ละเหรียญอย่างอิสระมีความเป็นไปได้ที่ 2/3 ว่ามันมีอคติอย่างน้อย 0.9 และส่วนที่เหลือของความน่าจะเป็นที่จะมีอคติได้ใน [0,1] คุณไม่รู้อคติของเหรียญ สิ่งที่คุณสามารถทำได้ในทุกขั้นตอนคือการโยนเหรียญและสังเกตผลลัพธ์ สำหรับ n ให้งานของคุณคือการหาเหรียญที่มีอคติอย่างน้อย 0.8 มีโอกาสอย่างน้อย ) คุณสามารถทำได้โดยใช้การโยนเหรียญ O (n) เท่านั้น?1 - ประสบการณ์( - n )1−exp⁡(−n)1-\exp(-n)

2
คุณสามารถระบุผลรวมของพีชคณิตสองชนิดในเวลาพหุนามได้หรือไม่?
มีสอง คำถามที่ถามเมื่อเร็ว ๆ นี้ใน cs.se ซึ่งอาจเกี่ยวข้องกับหรือมีกรณีพิเศษเทียบเท่ากับคำถามต่อไปนี้: สมมติว่าคุณมีลำดับ1 , 2 , ... nของnตัวเลขดังกล่าวว่าΣ n ฉัน= 1ฉัน = n ( n + 1 ) สลายลงในผลรวมของสองพีชคณิตที่πและσของ1 ... nเพื่อให้ฉัน = π ฉัน + σ ฉันa1,a2,…ana1,a2,…ana_1, a_2, \ldots a_nnnn∑ni=1ai=n(n+1).∑i=1nai=n(n+1).\sum_{i=1}^n a_i = n(n+1).ππ\piσσ\sigma1…n1…n1 \dots nai=πi+σiai=πi+σia_i = \pi_i + \sigma_i\,. มีบางเงื่อนไขที่จำเป็นคือ: ถ้าฉัน จะเรียงเพื่อให้1 ≤ 2 ≤ ... …

2
สามัญที่ตามมา
สตริงมีแต่มักจะไม่แตกต่างกันทั้งหมด ความซับซ้อนในการค้นหาความถี่สูงสุดของการเรียงลำดับใด ๆ คืออะไร?2n2n2^n ตัวอย่างเช่นสตริง "sequence" มี 7 สำเนาของ sequence "sue" และนี่คือค่าสูงสุด ตัวอย่างรหัสกำลังดุร้ายที่http://ideone.com/UIp3t มีทฤษฎีบทโครงสร้างที่เกี่ยวข้องหรือไม่? ทั้งสองสิ่งนี้กลายเป็นเท็จ : การเรียงลำดับความถี่สูงสุดที่ยาวที่สุดนั้นไม่เหมือนใคร ความถี่สูงสุดของ length- subsequence มีรูปแบบเดียวในkkkkkk ลิงก์ที่เกี่ยวข้องอาจเป็นไปได้: การนับ # การเรียงลำดับที่แตกต่างกัน http://11011110.livejournal.com/254164.html∈P∈P\in \mathbf{P} ปัญหาการประกวดที่เกี่ยวข้องสำหรับหลายแหล่งhttp://www.spoj.pl/problems/CSUBSEQS/ เอกสารที่เกี่ยวข้องhttp://dx.doi.org/10.1016/j.tcs.2008.08.035 แก้ไข 10 วันต่อมา:ขอบคุณที่รับชม! ฉันสงสัยว่าสิ่งนี้จะทำให้ปัญหาการแข่งขันการเขียนโปรแกรมพหุนามดีมากหรือไม่ ฉันเดาไม่ได้ แต่ฉันหวังว่าจะคิดอีกครั้งในภายหลัง

4
ปัญหา“ กำกับแล้ว” ที่ง่ายกว่าตัวแปร“ ไม่ได้กำกับ”
ฉันกำลังนำเสนอการบรรยายเกี่ยวกับการเรียงแพนเค้กและกล่าวว่า: การเรียงลำดับตามการกลับรายการคือ NP-hard "ลงนาม" เรียงลำดับตามการพลิกผันอยู่ใน P ซึ่งทำให้ฉันคิด มีความรู้สึกว่าการเรียงลำดับ "เซ็นชื่อ" คือ "กำกับ" - คุณสามารถดูเครื่องหมายเป็นทิศทาง (และแน่นอนนี่คือแรงจูงใจจากชีววิทยาวิวัฒนาการ) แต่มันเป็นปัญหาที่ง่ายขึ้น! สิ่งนี้เป็นเรื่องผิดปกติเพราะโดยทั่วไป (อย่างน้อยในกราฟ) ปัญหาการกำกับยากกว่า (หรืออย่างน้อยก็ยาก) เช่นเดียวกับคู่หูที่ไม่ได้บอกทิศทาง สมมติว่ามีคำจำกัดความที่ "ชี้แนะ" มีตัวอย่างของปัญหาการชี้นำที่ง่ายกว่าคู่หูที่ไม่ได้บอกทางหรือไม่?

16
ปัญหาอัลกอริทึมที่ดูยากทำได้ง่ายโดยทฤษฎีบท
ฉันกำลังมองหาตัวอย่างที่ดีที่มีปรากฏการณ์ต่อไปนี้เกิดขึ้น: (1) ปัญหาอัลกอริทึมดูยากถ้าคุณต้องการแก้ปัญหาให้ทำงานจากคำจำกัดความและใช้ผลลัพธ์มาตรฐานเท่านั้น (2) ในทางกลับกันมันจะกลายเป็นเรื่องง่ายถ้าคุณรู้ว่าบางทฤษฎี (ไม่ได้มาตรฐาน) เป้าหมายของสิ่งนี้คือเพื่อแสดงให้นักเรียนเห็นว่าการเรียนรู้ทฤษฎีมากกว่านี้อาจมีประโยชน์แม้กับผู้ที่อยู่นอกสนามทฤษฎี (เช่นวิศวกรซอฟต์แวร์วิศวกรคอมพิวเตอร์ ฯลฯ ) นี่คือตัวอย่าง: คำถาม:ได้รับจำนวนเต็ม , มีกราฟ -vertex อยู่ (และถ้าเป็นเช่นนั้น, หาหนึ่งอัน), เช่นว่าการเชื่อมต่อจุดยอดคือ , การเชื่อมต่อของขอบคือ , และระดับต่ำสุดคือ ?n k l dn , k , l , dn,k,l,dn, k, l, dnnnkkkล.llddd โปรดทราบว่าเราต้องการให้พารามิเตอร์นั้นมีค่าเท่ากับตัวเลขที่กำหนดไม่ใช่เพียงขอบเขตเท่านั้น หากคุณต้องการแก้ปัญหานี้ตั้งแต่เริ่มต้นมันอาจดูค่อนข้างยาก ในทางตรงกันข้ามถ้าคุณคุ้นเคยกับทฤษฎีบทต่อไปนี้ (ดูทฤษฎีกราฟ Extremalโดย B. Bollobas) สถานการณ์จะแตกต่างกันมาก ทฤษฎีบท:ปล่อยเป็นจำนวนเต็ม มีกราฟ -vertex พร้อมจุดเชื่อมต่อ , การเชื่อมต่อขอบ …

4
คลาสสูงสุดที่ชุดอิสระที่ใหญ่ที่สุดสามารถพบได้ในเวลาพหุนาม
ISGCIรายการกว่า 1,100 ชั้นเรียนของกราฟ สำหรับหลายสิ่งเหล่านี้เรารู้ว่าการตัดสินใจของอิสระสามารถตัดสินใจได้ในเวลาพหุนาม เหล่านี้บางครั้งเรียกว่าการเรียนเป็นง่าย ฉันต้องการที่จะรวบรวมรายชื่อของสูงสุด IS-ง่ายเรียน คลาสเหล่านี้รวมกันเป็นขอบเขตของ เนื่องจากเราสามารถเพิ่มกราฟจำนวน จำกัด ลงในคลาส IS-easy ที่ไม่มีที่สิ้นสุดโดยไม่มีผลกระทบต่อการจัดการระบบได้จึงมีข้อ จำกัด บางประการ ลอง จำกัด คลาสให้อยู่ในกลุ่มที่มีการถ่ายทอดทางพันธุกรรม (ปิดภายใต้การใช้ subgraphs ที่เหนี่ยวนำหรือเท่าเทียมกันที่กำหนดโดยชุดของกราฟย่อยย่อย induced ที่แยกออก) ยิ่งกว่านั้นให้พิจารณาเฉพาะตระกูลที่ปราศจาก X สำหรับเซต X พร้อมคำอธิบายเล็ก ๆ มีอาจจะ มียังเป็นโซ่จากน้อยไปมากไม่มีที่สิ้นสุดของการเรียนเวไนย (เช่นฟรีและการเรียนการอธิบายโดยเดวิด Eppstein ด้านล่าง) แต่ขอ จำกัด การให้ความสนใจกับการเรียนว่า ได้รับการพิสูจน์แล้วว่าเป็นเรื่องง่าย( P, ดาว1 , 2 , k)(P,star1,2,k)(P,\text{star}_{1,2,k}) นี่คือสิ่งที่ฉันรู้: กราฟที่สมบูรณ์แบบ ( P, ดาว1 , …

3
จะสร้างกราฟสุ่มที่ไม่มีวัฏจักร Hamiltonian ได้อย่างไร?
ให้คลาส A แสดงกราฟทั้งหมดที่มีขนาดซึ่งมีวัฏจักร Hamiltonian มันเป็นเรื่องง่ายที่จะสร้างกราฟสุ่มจากชั้นนี้ - ใช้เวลาโหนดแยกเพิ่มวงจรมิลสุ่มแล้วเพิ่มขอบแบบสุ่มnnnnnn ให้คลาส B แสดงกราฟทั้งหมดที่มีขนาดซึ่งไม่มีวัฏจักร Hamiltonian เราจะเลือกกราฟสุ่มจากชั้นเรียนนี้ได้อย่างไร (หรือทำสิ่งที่ใกล้เคียง)nnn

5
การค้นหาไบนารีทั่วไปสำหรับโพสต์?
สมมติว่าฉันมี poset "S" และ monotonic predicate "P" บน S ฉันต้องการค้นหาองค์ประกอบหนึ่งหรือทั้งหมดของ S ที่น่าพอใจ P แก้ไข : ฉันสนใจในการลดจำนวนของการประเมินผลของ P มีอัลกอริทึมใดที่มีอยู่สำหรับปัญหานี้และคุณสมบัติและการดำเนินการเพิ่มเติมใดบ้างที่พวกเขาต้องการใน S สิ่งที่เกี่ยวกับกรณีพิเศษที่สำคัญเช่น: S คือลำดับเชิงเส้น - จากนั้นการค้นหาแบบไบนารีปกติจะทำงานตราบใดที่คุณมีการดำเนินการ "find middle" S คือขัดแตะ S เป็นโครงร่างย่อย S คือตาข่ายหลายชุด ... ทั้งสองกรณีหลังมีความสำคัญเป็นพิเศษเช่นสำหรับการออกแบบการทดสอบ - คุณมีชุดบูลีนหรือพารามิเตอร์จริงและคุณต้องการค้นหาชุดค่าผสมที่เล็กที่สุดเท่าที่จะเป็นไปได้ที่สร้างรูปแบบเฉพาะ (เช่นการทดสอบที่ล้มเหลว)

10
อัลกอริธึมที่น่าจะเป็น (สุ่ม) ก่อนวิทยาศาสตร์คอมพิวเตอร์ "ทันสมัย" จะปรากฏขึ้น
แก้ไข: ฉันเลือกคำตอบด้วยคะแนนสูงสุดภายในวันที่ 6 ธันวาคม 2012 นี่เป็นคำถามที่อ่อนนุ่ม แนวคิดของอัลกอริธึม (กำหนดขึ้น) ย้อนกลับไปที่ปีก่อนคริสตกาล ขั้นตอนวิธีความน่าจะเป็นเป็นอย่างไร ในรายการ wiki นี้อัลกอริทึมของ Rabin สำหรับปัญหาคู่ที่ใกล้ที่สุดในเรขาคณิตการคำนวณได้รับเป็นอัลกอริทึมแบบสุ่มแรก (ปี ???) ลิปตันแนะนำอัลกอริธึมของราบินในฐานะจุดเริ่มต้นของยุคสมัยใหม่ของอัลกอริธึมแบบสุ่มที่นี่แต่ไม่ใช่ในตอนแรก ฉันยังรู้อัลกอริธึมมากมายสำหรับออโตมาตะแบบ จำกัด ความน่าจะเป็น (แบบจำลองการคำนวณที่ง่ายมาก) ที่ค้นพบในช่วงปี 1960 คุณรู้จักอัลกอริธึม / ความน่าจะเป็นแบบสุ่ม (หรือวิธีการ) ก่อนปี 1960 หรือไม่? หรือ การค้นหาใดที่สามารถมองเห็นเป็นอัลกอริธึมความน่าจะเป็น / สุ่มแบบแรก

4
ความซับซ้อนของการใช้การเรียงสับเปลี่ยนในสถานที่
ด้วยความประหลาดใจของฉันฉันไม่สามารถหาเอกสารเกี่ยวกับเรื่องนี้ - อาจค้นหาคำหลักที่ผิด ดังนั้นเรามีอะไรหลายอย่างและฟังก์ชั่นในดัชนีของมัน fคือการเรียงสับเปลี่ยนฉffฉff เราจะจัดลำดับอาร์เรย์ใหม่ตามด้วยหน่วยความจำและ runtime ใกล้เคียงกับO ( 1 )และO ( n )มากที่สุดเท่าที่เป็นไปได้หรือไม่ฉffO ( 1 )O(1)O(1)O ( n )O(n)O(n) มีเงื่อนไขเพิ่มเติมหรือไม่เมื่องานนี้ง่ายขึ้น? เช่นเมื่อเรารู้อย่างชัดเจนว่าฟังก์ชันเป็นค่าผกผันของf ?ก.ggฉff ฉันรู้ว่าอัลกอริทึมที่ติดตามวัฏจักรและลัดวงจรสำหรับแต่ละดัชนีเพื่อตรวจสอบว่ามันน้อยที่สุดในวัฏจักรของมันหรือไม่ แต่อีกครั้งมันมีช่วงเวลาที่เลวร้ายที่สุดแม้ว่าโดยเฉลี่ยดูเหมือนว่าจะทำงานได้ดีขึ้น ..O ( n2)O(n2)O(n^2)

1
แอปพลิเคชั่นอื่น ๆ ของ Karger-Stein branching amplification
ฉันเพิ่งสอนอัลกอริทึม mincut แบบสุ่ม Karger-Steinในคลาสอัลกอริทึมการศึกษาของฉัน นี้เป็นจริงอัญมณีอัลกอริทึมดังนั้นฉันไม่สามารถไม่ได้สอน แต่มันมักจะออกผมผิดหวังเพราะผมไม่ทราบว่าการใช้งานอื่น ๆ ของเทคนิคหลัก (ดังนั้นจึงเป็นการยากที่จะกำหนดการบ้านที่ผลักดันให้ถึงบ้าน) อัลกอริทึมของ Karger และ Stein เป็นการปรับแต่งอัลกอริธึมก่อนหน้าของ Karger ซึ่งทำสัญญาแบบสุ่มขอบจนกว่ากราฟจะมีจุดยอดสองจุดเท่านั้น อัลกอริทึมแบบง่ายนี้จะทำงานในเวลาและส่งกลับค่าตัดต่ำสุดด้วยความน่าจะเป็นโดยที่คือจำนวนจุดยอดในกราฟอินพุต "Recursive Contraction Algorithm" ที่ซ้ำแล้วซ้ำอีกจะทำสัญญาแบบสุ่มจนจำนวนจุดยอดลดลงจากเป็นเรียกซ้ำตัวเองบนกราฟที่เหลือซ้ำสองครั้ง การใช้งานอัลกอริทึมที่ได้รับการปรับปรุงอย่างตรงไปตรงมานั้นรันในΩ ( 1 / n 2 ) n n n / √O ( n2)O(n2)O(n^2)Ω ( 1 / n2)Ω(1/n2)\Omega(1/n^2)nnnnnnn / 2-√n/2n/\sqrt{2}Ω ( 1 /บันทึกn )O ( n2เข้าสู่ระบบn )O(n2log⁡n)O(n^2\log n)เวลาและผลตอบแทนการตัดขั้นต่ำที่มีความน่าจะเป็นn) (มีการใช้อัลกอริธึมที่มีประสิทธิภาพมากกว่าและอัลกอริธึมแบบสุ่มดีกว่า)Ω …

2
เป็นไปได้ไหมที่จะหาลำดับที่มีอยู่ในเวลาพหุนามในปัญหาต่อไปนี้
ฉันกำลังคิดถึงปัญหาต่อไปนี้อยู่พักหนึ่งและฉันไม่พบวิธีแก้ปัญหาแบบพหุนาม สัตว์เดียรัจฉานเท่านั้น ฉันได้พยายามลดปัญหา NP-Complete ลงด้วยเช่นกันโดยไม่ประสบความสำเร็จ นี่คือปัญหา : คุณมีชุดเรียงลำดับ{(A1,B1),(A2,B2),…,(An,Bn)}{(A1,B1),(A2,B2),…,(An,Bn)}\{(A_1, B_1), (A_2, B_2), \ldots, (A_n, B_n)\}ของคู่จำนวนเต็มบวก (Ai,Bi)&lt;(Aj,Bj)⇔Ai&lt;Aj∨(Ai=Aj∧Bi&lt;Bj)(Ai,Bi)&lt;(Aj,Bj)⇔Ai&lt;Aj∨(Ai=Aj∧Bi&lt;Bj)(A_i, B_i) < (A_j, B_j) \Leftrightarrow A_i < A_j \lor (A_i = A_j \land B_i < B_j) (Ai,Bi)=(Aj,Bj)⇔Ai=Aj∧Bi=Bj(Ai,Bi)=(Aj,Bj)⇔Ai=Aj∧Bi=Bj(A_i, B_i) = (A_j, B_j) \Leftrightarrow A_i = A_j \land B_i = B_j การดำเนินการต่อไปนี้สามารถใช้กับคู่: Swap(pair). มันสลับองค์ประกอบของคู่ดังนั้น(10,50)(10,50)(10, 50)จะกลายเป็น(50,10)(50,10)(50, 10) เมื่อมีการสลับคู่ในชุดนั้นชุดนั้นก็จะถูกจัดเรียงอีกครั้งโดยอัตโนมัติ …

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