คำถามติดแท็ก algorithm-design

4
ความแปลกใหม่ใน MapReduce คืออะไร?
ไม่กี่ปีที่ผ่านมาMapReduceได้รับการยกย่องว่าเป็นการปฏิวัติการเขียนโปรแกรมแบบกระจาย นอกจากนี้ยังมีนักวิจารณ์แต่โดยมากแล้วก็มีโฆษณาที่กระตือรือร้น มันยังจดสิทธิบัตร! [1] ชื่อนี้เป็นที่ระลึกถึงmapและreduceในการเขียนโปรแกรมการทำงาน แต่เมื่อฉันอ่าน (Wikipedia) ขั้นตอนแผนที่:โหนดหลักจะรับอินพุตแบ่งเป็นปัญหาย่อยที่เล็กกว่าและกระจายไปยังโหนดผู้ปฏิบัติงาน โหนดผู้ปฏิบัติงานอาจทำสิ่งนี้อีกครั้งในทางกลับนำไปสู่โครงสร้างต้นไม้หลายระดับ โหนดผู้ปฏิบัติงานประมวลผลปัญหาที่เล็กกว่าและส่งคำตอบกลับไปที่โหนดหลัก ลดขั้นตอน:โหนดหลักจะรวบรวมคำตอบสำหรับปัญหาย่อยทั้งหมดและรวมเข้าด้วยกันในรูปแบบเอาต์พุตบางส่วน - คำตอบสำหรับปัญหาที่พยายามแก้ไขในขั้นต้น หรือ [2] Internals of MAP: [... ] MAP แยกค่าอินพุตเป็นคำ [... ] MAP หมายถึงการเชื่อมโยงคู่คีย์ / ค่าที่กำหนดของอินพุตกับคู่กลางคีย์ / ค่าที่อาจเกิดขึ้น Internals of REDUCE: [... ] [REDUCE] ดำเนินการรวมที่จำเป็น (พูดลด): รับค่าจำนวนมากและลดลงเป็นค่าเดียว ฉันไม่สามารถช่วย แต่คิดว่า: นี่คือการแบ่ง & พิชิต (ในแง่ของการควบรวมกิจการ) ธรรมดาและเรียบง่าย! ดังนั้นมีความแปลกใหม่ (แนวคิด) ใน MapReduce …

4
การเขียนโปรแกรมแบบไดนามิกเกี่ยวกับอะไร?
ขออภัยล่วงหน้าหากคำถามนี้ฟังดูเป็นใบ้ ... เท่าที่ฉันรู้การสร้างอัลกอริทึมโดยใช้การเขียนโปรแกรมแบบไดนามิกทำงานในลักษณะนี้: แสดงปัญหาว่าเป็นความสัมพันธ์ที่เกิดซ้ำ; ใช้ความสัมพันธ์ที่เกิดซ้ำทั้งผ่านการบันทึกและผ่านวิธีการจากล่างขึ้นบน เท่าที่ฉันรู้ฉันได้กล่าวทุกอย่างเกี่ยวกับการเขียนโปรแกรมแบบไดนามิก ฉันหมายถึง: การเขียนโปรแกรมแบบไดนามิกไม่ได้ให้เครื่องมือ / กฎ / วิธีการ / ทฤษฎีบทสำหรับการแสดงความสัมพันธ์ที่เกิดขึ้นอีกหรือเปลี่ยนเป็นรหัส ดังนั้นมีอะไรพิเศษเกี่ยวกับการเขียนโปรแกรมแบบไดนามิก? มันให้อะไรคุณนอกจากวิธีคลุมเครือสำหรับการเข้าใกล้ปัญหาบางประเภท?

1
เลือกค่ามัธยฐานและองค์ประกอบทางซ้ายและขวาอย่างมีประสิทธิภาพ
สมมติว่าเรามีชุดของNโคดS={a1,a2,a3,…,aN}S={a1,a2,a3,…,aN}S = \{ a_1,a_2,a_3,\ldots , a_N \}NNN โคเดอร์แต่ละตัวมีเรตและจำนวนเหรียญทองE iพวกเขาชนะมาแล้วRiRiR_iEiEiE_i บริษัท ซอฟต์แวร์ต้องการจ้างผู้เขียนโค้ดสามคนเพื่อพัฒนาแอปพลิเคชัน สำหรับการจ้างนักเขียนโค้ดสามคนพวกเขาพัฒนากลยุทธ์ต่อไปนี้: พวกเขาจัดเรียงโคเดอร์ตามลำดับของการจัดอันดับและเรียงจากมากไปน้อยของเหรียญทอง จากรายการที่จัดเรียงนี้พวกเขาเลือกตัวเข้ารหัสกลางสามตัว เช่นถ้ารายการจัดเป็นพวกเขาเลือก( 2 , 3 , 1 )โคด(a5,a2,a3,a1,a4)(a5,a2,a3,a1,a4)(a_5,a_2,a_3,a_1,a_4)(a2,a3,a1)(a2,a3,a1)(a_2,a_3,a_1) ตอนนี้เราต้องช่วย บริษัท ด้วยการเขียนโปรแกรมสำหรับงานนี้ การป้อนข้อมูล: บรรทัดแรกมีคือจำนวนของโคเดอร์NNN จากนั้นบรรทัดที่สองจะมีเรตติ้งของi th coderRiRiR_iiii บรรทัดที่สามมีจำนวนเหรียญทองที่ใส่ถุงโดย th coderiii เอาท์พุท: แสดงเพียงหนึ่งบรรทัดที่มีผลรวมของเหรียญทองที่ได้รับจากโคเดอร์ทั้งสามที่ บริษัท จะเลือก

2
การเรียงลำดับพีชคณิตที่มีองค์ประกอบไม่ตรงกับดัชนี± M
ฉันเพิ่งถูกถามถึงปัญหานี้ในการสัมภาษณ์อัลกอริทึมและไม่สามารถแก้ไขได้ กำหนดสองค่า N และ M คุณต้องนับจำนวนพีชคณิตของความยาว N (โดยใช้ตัวเลขตั้งแต่ 1 ถึง N) ซึ่งความแตกต่างที่แน่นอนระหว่างตัวเลขใด ๆ ในการเปลี่ยนแปลงและตำแหน่งในการเปลี่ยนแปลงไม่เท่ากับ M ตัวอย่าง - ถ้า N = 3 และ M = 1 ดังนั้น 1 2 3 และ 3 2 1 คือการเรียงสับเปลี่ยนที่ถูกต้อง แต่ 1 3 2 ไม่ถูกต้องเนื่องจากหมายเลข 3 อยู่ที่ตำแหน่ง 2 และความแตกต่างคือ = M ฉันลองใช้การเขียนโปรแกรม NxM Dynamic แต่ไม่สามารถเกิดซ้ำได้ซึ่งไม่นับการทำซ้ำ

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

1
ประมวลผลอาร์เรย์ล่วงหน้าเพื่อนับองค์ประกอบในชิ้น (ลดเหลือ RMQ?)
รับอาร์เรย์1 , ... , nจำนวนธรรมชาติ≤ kที่kเป็นค่าคงที่ฉันต้องการคำตอบในO ( 1 )คำสั่งของรูปแบบ: "กี่ครั้งไม่เมตรปรากฏในอาร์เรย์ระหว่างดัชนีฉันและเจ "a1, … , ana1,…,ana_1,\ldots,a_n≤ k≤k\leq kkkkO ( 1 )O(1)O(1)ม.mmiiijjj อาร์เรย์ควรถูกประมวลผลล่วงหน้าในเวลาเชิงเส้น โดยเฉพาะอย่างยิ่งฉันต้องการทราบว่ามีการลดลงของการค้นหาขั้นต่ำของช่วงหรือไม่ นี่เทียบเท่ากับ RMQ ในกรณีที่และคุณต้องการสอบถามจำนวนคนภายในช่วงเวลา ดังนั้นเราจึงสามารถใช้มัน ฉันไม่สามารถตอบคำถามของตัวเองได้เนื่องจากข้อ จำกัด ของ SEk=1k=1k=1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.