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

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

4
สัมภาษณ์การจัดอันดับคำถาม FizzBuzz (1) การใช้ malloc (10) [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันต้องการให้ความเห็นเกี่ยวกับความยากของคำถามสัมภาษณ์ต่อไปนี้: ค้นหา subarray ต่อเนื่องพร้อมผลรวมสูงสุดในอาร์เรย์จำนวนเต็มในเวลา O (n) ปัญหาที่ทำให้เกิดเสียงเล็กน้อยนี้ได้รับชื่อเสียงจาก Jon Bentley ใน Programming Pearls ซึ่งเขาใช้มันเพื่อสาธิตเทคนิคการออกแบบอัลกอริทึม ในระดับ 1-10, 1 คือการทดสอบFizzBuzz (หรือHoppityHop ) และ 10 การใช้งานฟังก์ชั่น C stdlib malloc () คุณจะจัดอันดับปัญหาข้างต้นอย่างไร ฉันคิดว่าผู้ที่สามารถตอบคำถามนี้ได้ดีที่สุดคือผู้ที่อ่านการเขียนโปรแกรม Pearls และพยายามแก้ไขปัญหานี้ด้วยตนเอง เพื่อกระตุ้นให้ผู้ที่ไม่มี 'Programming Pearls' ได้รับการแนะนำหลายครั้งในรายการ '10 อันดับหนังสือโปรแกรม' ความคิดเห็นสองข้ออาจช่วยให้ได้คะแนนที่ดีขึ้น: การใช้ malloc () ไม่น่ากลัวเท่าที่ควร ดูตัวอย่างการเขียนโปรแกรมภาษา C …

10
ต้องการอัลกอริทึมไปยังลูปที่เขียนด้วยมือไหม
ข้อใดต่อไปนี้ที่คุณพบว่าสามารถอ่านได้มากขึ้น วงเขียนด้วยมือ: for (std::vector<Foo>::const_iterator it = vec.begin(); it != vec.end(); ++it) { bar.process(*it); } หรืออัลกอริทึมภาวนา: #include <algorithm> #include <functional> std::for_each(vec.begin(), vec.end(), std::bind1st(std::mem_fun_ref(&Bar::process), bar)); ฉันสงสัยว่าstd::for_eachมันคุ้มค่าจริงหรือเปล่าจากตัวอย่างง่ายๆที่ต้องใช้รหัสจำนวนมาก คุณคิดอย่างไรกับเรื่องนี้?
10 c++  algorithms 

5
เป็นไปได้หรือไม่ที่จะประเมินความปลอดภัยของโปรแกรมสำหรับรหัสที่กำหนดเอง?
เมื่อเร็ว ๆ นี้ฉันคิดถึงรหัสที่ปลอดภัยมาก Thread ปลอดภัย หน่วยความจำที่ปลอดภัย ไม่ระเบิดในหน้าของคุณด้วย -a- segfault ปลอดภัย แต่เพื่อความชัดเจนในคำถามลองใช้โมเดลความปลอดภัยของรัสเป็นคำจำกัดความต่อเนื่องของเรา บ่อยครั้งที่การทำให้มั่นใจในความปลอดภัยนั้นเป็นปัญหาใหญ่แค่ไหนเพราะได้รับการพิสูจน์โดยความต้องการของ Rust unsafeมีแนวคิดการเขียนโปรแกรมที่สมเหตุสมผลเช่นการเห็นพ้องต้องกันซึ่งไม่สามารถนำมาใช้ใน Rust ได้โดยไม่ต้องใช้unsafeคำสำคัญ . แม้ว่าการทำงานพร้อมกันสามารถทำให้ปลอดภัยได้อย่างสมบูรณ์แบบด้วยการล็อก mutexes ช่องทางและการแยกหน่วยความจำหรือสิ่งที่มีอยู่คุณต้องทำงานนอกรูปแบบความปลอดภัยของ Rust ด้วยunsafeแล้วรับรองตัวแปลด้วยตนเองว่า"ใช่ฉันรู้ว่าฉันกำลังทำอะไร สิ่งนี้ดูไม่ปลอดภัย แต่ฉันได้พิสูจน์แล้วว่าในทางคณิตศาสตร์มันปลอดภัยอย่างสมบูรณ์ " แต่ปกติแล้วจะลงมาด้วยตนเองทำให้รูปแบบของสิ่งเหล่านี้และพวกเขาพิสูจน์ความปลอดภัยอยู่กับprovers ทฤษฎีบท จากทั้งมุมมองวิทยาศาสตร์คอมพิวเตอร์ (เป็นไปได้) และมุมมองการปฏิบัติจริง (มันจะใช้ชีวิตของจักรวาล) มันสมเหตุสมผลที่จะจินตนาการโปรแกรมที่ใช้รหัสโดยพลการในภาษาใด ๆ และประเมินว่ามันเป็นหรือไม่ " ปลอดภัยสนิม "? คำเตือน : สิ่งที่ง่ายในเรื่องนี้ก็คือการชี้ให้เห็นว่าโปรแกรมอาจจะปล่อยปละละเลยดังนั้นปัญหาการหยุดทำงานจึงทำให้เราล้มเหลว สมมติว่าโปรแกรมใดก็ตามที่ส่งไปยังผู้อ่านนั้นรับประกันว่าจะหยุด ในขณะที่ "รหัสโดยพลการในภาษาใด ๆ " เป็นเป้าหมาย แต่ฉันก็ตระหนักว่าสิ่งนี้ขึ้นอยู่กับความคุ้นเคยของโปรแกรมกับภาษาที่เลือกซึ่งเราจะดำเนินการตามที่กำหนด

3
ลำดับความสำคัญของฟังก์ชั่นในอัลกอริทึม Shunting-yard
ฉันกำลังทำงานผ่านอัลกอริทึม Shunting-yardดังที่วิกิพีเดียอธิบายไว้ คำอธิบายของอัลกอริทึมเมื่อจัดการกับตัวดำเนินการเป็นดังนี้: ถ้าโทเค็นเป็นตัวดำเนินการ o1 ดังนั้น: ในขณะที่มีโทเค็นของโอเปอเรเตอร์ o2 ที่ด้านบนสุดของโอเปอเรเตอร์สแต็กและอย่างใดอย่างหนึ่ง o1 is left-associative and its precedence is less than or equal to that of o2, or o1 is right associative, and has precedence less than that of o2, จากนั้นป๊อป o2 จากตัวดำเนินการสแต็กลงบนเอาต์พุตคิว กด o1 ลงบนสแต็กโอเปอเรเตอร์ อย่างไรก็ตามพวกเขาให้ตัวอย่างต่อไปนี้: การป้อนข้อมูล: sin max 2 3 / …

2
อัลกอริทึมสำหรับรายการที่หมดอายุในการจัดเก็บคีย์ - ค่าคืออะไร?
ฉันคิดว่าการจัดเก็บคีย์ - ค่าปัจจุบันใช้ "วันหมดอายุ" สำหรับรายการอย่างไร ขณะนี้ฉันมี 2 ตัวแปรสำหรับสิ่งนั้นในใจ: พวกเขาไม่ได้ทำอะไร (เก็บข้อมูลที่หมดอายุ) และจะตรวจสอบเมื่อคุณทำเช่น GET โดยคีย์บางอย่าง ปัญหาที่นี่คือถ้าคุณถูก จำกัด ในหน่วยความจำรายการที่หมดอายุจะไม่ถูกลบ พวกเขาเก็บโครงสร้างข้อมูลเพิ่มเติมเพื่อให้ได้ "เร็วที่สุดที่จะหมดอายุ" ฉันเห็นมันสามารถทำได้กับบางสิ่งเช่นนี้ storage_data = dict(key -> [value, expire_timestamp]) expire_tree = SomeBinaryLikeTree(expire_timestamp -> [keys])

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

3
เลือกอาหารที่มีแคลอรี่มากที่สุด
สมมติว่าฉันกินห้ามื้อต่อวันและเนื่องจากมีเจ็ดวันในหนึ่งสัปดาห์ฉันมีสูตรอาหารเจ็ดมื้อแต่ละมื้อรวม 35 สูตร แต่ละสูตรมีแคลอรี่นับ ในแต่ละวันจะต้องมีหนึ่งสูตรต่อมื้อและแต่ละสูตรจะถูกกำหนดเป็นอาหารเฉพาะ (เช่นคุณไม่สามารถทานแพนเค้กสำหรับอาหารค่ำ) 35 สูตรทั้งหมดจะต้องอยู่ในการแก้ปัญหาดังนั้นจึงไม่สามารถทำซ้ำสูตรในระหว่างสัปดาห์ ฉันต้องการค้นหาการจัดเรียงของมื้ออาหารซึ่งจะให้จำนวนแคลอรี่ที่มากที่สุดต่อวัน - นั่นคือฉันต้องการลดความแตกต่างของแคลอรี่ทั้งหมดที่บริโภคในแต่ละวัน นี่ไม่ใช่ปัญหาการบ้าน แต่จริงอยู่! ฉันไม่สามารถหาวิธีที่ดีกว่าการใช้กำลังอย่างดุเดือดและมีชุดค่าผสม 7! ^ 4 ซึ่งมีจำนวนมาก

1
การสร้างแบบจำลองตารางการทำงานที่ซับซ้อน
ฉันมีปัญหาในโลกแห่งความจริงที่ฉันพยายามเป็นตัวแทนและเป็นอัตโนมัติ ฉันทำให้มันง่ายขึ้นและเป็นนามธรรมลงไปต่อไปนี้: มีที่ทำงาน n แห่ง (P1, P2, ... , Pn) แต่ละแห่ง Pn มีรหัส Kn มีคนงาน m, (W1, W2, ... , Wm) ในการทำงานที่ Pn คนงานจะต้องถือ Kn แต่ละคีย์สามารถเก็บไว้โดยคนงานหรือปล่อยไว้ที่ Exchange, E ผู้ปฏิบัติงานสามารถเดินทางไปที่ Exchange ได้ตลอดเวลาเพื่อรับกุญแจที่ไม่มีการอ้างสิทธิ์หรือส่งกุญแจเพื่อให้ผู้อื่นใช้ ขณะนี้มีตารางงานภายนอกที่ต้องทำให้เสร็จในลำดับที่เข้มงวด ตัวอย่างเช่น: 2016-04-21 W1 ต้องทำงานที่ P6 2016-04-21 W2 ต้องทำงานที่ P3 ต้องแลกเปลี่ยนกุญแจ ** 2016-04-22 W3 ต้องทำงานที่ P3 2016-04-22 W2 ต้องทำงานที่ …

2
อัลกอริทึมการบีบอัดที่ดีที่สุดสำหรับภาพถ่ายตามเวลาที่กำหนด
ฉันมีโฟลเดอร์ที่มีภาพถ่าย JPEG ประมาณ 9,000 ภาพ (ประมาณ 30Gb) ซึ่งฉันต้องการเก็บถาวรด้วยการบีบอัดบางประเภท ฉันเข้าใจว่าการบีบอัด JPEG นั้นปกติแล้วจะไม่ได้ผลมากนัก แต่ภาพถ่ายเหล่านี้เป็นเฟรมของเวลาที่กำหนดดังนั้นจึงมีความธรรมดาสามัญจำนวนมากระหว่างภาพส่วนใหญ่ ฉันมีแนวโน้มที่จะลดขนาดไฟล์มากกว่าปกติในกรณีนี้หรือไม่? มีอัลกอริทึมการบีบอัด (ธรรมดา) ที่น่าจะทำได้ดีในสถานการณ์นี้หรือไม่

4
วิธีที่มีประสิทธิภาพที่สุดในการจัดเก็บข้อมูลนี้คืออะไร?
ฉันรับผิดชอบในการเขียนรหัส VB ​​เก่าอีกครั้ง ฉันเข้าใจว่ามันทำงานอย่างไร แต่ฉันรู้สึกว่ามีวิธีที่มีประสิทธิภาพมากกว่าในการทำสิ่งที่พวกเขาทำ ฉันไม่สามารถเข้าใจได้ว่ามันคืออะไร นี่คือตัวอย่างที่วางแผนไว้ว่าในแง่ของความต้องการข้อมูลนั้นคล้ายกับสิ่งที่ฉันต้องทำ ผู้ใช้ต้องเลือกผู้ผลิตยี่ห้อรุ่นและสีของรถใน GUI ฉันมีไฟล์ข้อความขนาดใหญ่ที่มีหน้าตาดังนี้: Ford Truck F150 red Ford Truck F150 blue Ford Truck F150 black Ford Truck F150 silver Ford Truck F250 red Ford Truck F250 green Ford Sedan Taurus red Ford Sedan Taurus green Ford Sedan Taurus white Ford... ... Subaru SUV …

7
อัลกอริทึมสำหรับกำหนดธุรกรรมระหว่างชุดข้อมูลรายสัปดาห์หรือไม่
ฉันพยายามพัฒนาเครื่องมือการรายงานขนาดเล็ก (พร้อม backend sqlite) ฉันสามารถอธิบายเครื่องมือนี้ในฐานะบัญชีแยกประเภท "ธุรกรรม" ได้ดีที่สุด สิ่งที่ฉันพยายามทำคือติดตาม "การทำธุรกรรม" จากการดึงข้อมูลรายสัปดาห์: "ใหม่" (หรือเพิ่ม) - ทรัพยากรเป็นสิ่งใหม่สำหรับแอปของฉันเนื่องจากแอปของฉันอาจไม่ได้ติดตามทรัพยากรนี้มาก่อนเนื่องจากไม่ได้เห็นผ่านสารสกัด "อัปเดต" (หรือกด) - มีการใช้งานล่าสุดของทรัพยากรนั้นอัปเดตช่วงเวลาการเก็บข้อมูลภายในสัปดาห์อื่น "ลบ" (หรือลดลง) - รายการนี้ไม่เห็นการใช้งานตั้งแต่รายงานล่าสุด (ตัวเลือก แต่จะดีสำหรับการทำกราฟการเปลี่ยนแปลงความต้องการทรัพยากรในแต่ละสัปดาห์ต่อสัปดาห์) ทั้งหมดที่ฉันได้รับคือสารสกัดข้อมูลรายสัปดาห์ (ไฟล์ที่คั่นด้วยไพพ์ไลน์) มาจากระบบเก็บถาวร / จัดการบันทึกแบบดั้งเดิมที่ฉันไม่สามารถควบคุมได้ แต่ละบรรทัดสามารถกลั่นโดยพื้นฐานนี้: resource_id | resource info | customer_id | customer_info ข้อมูลตัวอย่าง: 10| Title X | 1 | Bob 11| Another title | …

3
อัลกอริทึมของฉันที่แยกกล่องที่ใหญ่ที่สุดที่สามารถสร้างได้จากกล่องที่เล็กกว่านั้นช้าเกินไป
ลองจินตนาการถึงโลกตามก้อน (เช่น Minecraft, Trove หรือ Cube โลก) ที่ทุกอย่างถูกสร้างขึ้นจากก้อนขนาดเดียวกันและก้อนทั้งหมดเป็นของเดียวกันชนิด เป้าหมายคือการเป็นตัวแทนของโลกที่มีกล่องสี่เหลี่ยมจำนวนน้อยที่สุด (โดยรวมก้อน แต่ยังคงรูปร่างนูน (aka รูปร่างกล่องสี่เหลี่ยม)) อัลกอริทึมของฉันประสบความสำเร็จในสิ่งนี้ แต่ประสิทธิภาพของมันช้าเกินไปสำหรับวัตถุประสงค์ที่ตั้งใจไว้ มีอัลกอริทึมเร็วขึ้นหรือไม่ หลอก -C # -code สำหรับอัลกอริทึมของฉันเป็นพื้น: struct Coordinate { int x,y,z; }; //<-- integer based grid HashSet<Coordinate> world; // <-- contains all the cubes //width, height, and length represent how many cubes it spans struct …

2
pi หมายความว่าอย่างไรใน pseudocode อัลกอริทึม BFS นี้
ฉันมีรหัสเทียมต่อไปนี้สำหรับอัลกอริทึมการค้นหาแบบกว้าง BFS(G,s) 1 for each vertex u ∈ V(G) \ {s} 2 color[u] = white 3 d[u] = ∞ 4 π[u] = nil 5 color[s] = gray 6 d[s] = 0 7 π[s] = nil 8 Q = ∅ 9 Enqueue(Q,s) 10 while q ≠ ∅ 11 u = Dequeue(Q) …

3
จำนวนสตริงเมื่อแต่ละตัวละครจะต้องเกิดขึ้นแม้แต่ครั้ง
ฉันตีหัวกะโหลกที่ปัญหานี้มาระยะหนึ่งแล้วและมันเริ่มทำให้ฉันหงุดหงิดจริงๆ ปัญหาคือ: ฉันมีชุดของตัวอักษร, A, B, และC Dฉันต้องบอกว่าสตริงสามารถสร้างจากตัวละครเหล่านี้ได้กี่วิธีเมื่อความยาวเป็นnและตัวละครแต่ละตัวจะต้องเกิดขึ้นซ้ำ ๆ ตัวอย่างเช่นคำตอบสำหรับn = 2คือ 4: AA BB CC DD คำตอบn = 4คือ 40 สตริงที่ใช้ได้บางส่วนคือ: AAAA AABB CACA DAAD BCCB ฉันติดอยู่กับตรรกะ ฉันรู้สึกว่าอาจมีวิธีแก้ปัญหา DP สำหรับสิ่งนี้ การบังคับให้ฉันผ่านสิ่งนี้ออกมาจากคำถาม: จำนวนโซลูชันเติบโตอย่างรวดเร็วเป็นจำนวนมหาศาล ฉันได้ลองวาดไอเดียต่าง ๆ ลงบนกระดาษแล้วก็ไม่มีประโยชน์ ฉันต้องทิ้งความคิดเหล่านั้นเกือบทั้งหมดเนื่องจากความซับซ้อนของมันใหญ่เกินไป n = 10^4การแก้ปัญหาควรจะมีประสิทธิภาพสำหรับ หนึ่งในความคิดของฉันคือไม่ต้องติดตามสายอักขระที่แท้จริง แต่เฉพาะว่าตัวละครแต่ละตัวนั้นปรากฏตัวหรือแม้แต่ช่วงเวลาคี่ ฉันไม่สามารถหาวิธีที่จะใช้ตรรกะนี้ได้ มีใครช่วยฉันบ้าง

4
วิธีที่มีประสิทธิภาพที่สุดในการสร้างการสืบทอดทั้งหมดของโหนดทั้งหมดในทรี
ฉันกำลังมองหาอัลกอริทึมที่มีประสิทธิภาพที่สุดในการดึงทรี (จัดเก็บเป็นรายการขอบหรือเป็นรายการของการแมปจากโหนดแม่ไปยังรายการโหนดย่อย) และสร้างสำหรับโหนด EVERY รายการของโหนดทั้งหมดที่สืบเชื้อสายมาจากมัน (ระดับใบและระดับที่ไม่ใช่ใบ) การดำเนินการจะต้องผ่านลูปแทนการผสมเนื่องจากขนาด และควรเป็น O (N) คำถาม SO นี้ครอบคลุมโซลูชันมาตรฐานที่เห็นได้ชัดเจนพอสมควรสำหรับการค้นหาคำตอบสำหรับหนึ่งโหนดในทรี แต่เห็นได้ชัดว่าการทำซ้ำอัลกอริทึมนั้นในโหนดต้นไม้ทุกโหนดไม่มีประสิทธิภาพสูง (จากส่วนหัวของฉัน O (NlogN) ถึง O (N ^ 2) รู้จักรากของต้นไม้ ต้นไม้มีรูปร่างตามอำเภอใจอย่างแน่นอน (เช่นไม่ใช่ N-nary ไม่สมดุลในทางใดรูปร่างหรือรูปแบบไม่ลึกสม่ำเสมอ) - บางโหนดมีลูก 1-2 คนบางคนมีลูก 30K ในระดับปฏิบัติ (แม้ว่าจะไม่ส่งผลกระทบต่ออัลกอริทึม) ต้นไม้มีโหนด ~ 100K-200K

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