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

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

5
คุณระบุตัวพิมพ์“ edge” บนอัลกอริทึมได้อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 8 ปีที่ผ่านมา โดยทั่วไปแล้วคุณจะทราบได้อย่างไรว่ากรณีใดที่เลวร้ายที่สุดหรือดีที่สุดของคุณและกรณี "ขอบ" อื่น ๆ ที่คุณอาจมีก่อนที่จะมีและคุณจะเตรียมรหัสสำหรับพวกเขาได้อย่างไร

3
อัลกอริทึมปฏิทิน / การวางแผน
ฉันประสบปัญหาฉันไม่แน่ใจว่าจะเข้าใกล้ได้อย่างไร ฉันต้องสร้างปฏิทินสำหรับพนักงานแต่ละคนมีข้อ จำกัด ในการทำงานเฉพาะ (บางคนเป็นเรื่องธรรมดา) สิ่งที่ฉันทำงานด้วย: ฉันมีหมอ แพทย์แต่ละคนจะต้องทำงาน 5 วัน / สัปดาห์ แพทย์แต่ละคนต้องทำงาน 1 คืน / สัปดาห์ แพทย์แต่ละคนจะต้องทำงานในจำนวนคืนที่เท่ากันเมื่อเทียบกับแพทย์คนอื่น ๆ (หรือใกล้เคียงที่สุด) แพทย์แต่ละคนจะต้องทำงานในคืนวันพฤหัสบดีและคืนวันอาทิตย์ในจำนวนเท่ากันเมื่อเทียบกับหมอคนอื่น ๆ แพทย์บางคนไม่สามารถทำงานได้ในบางวัน / คืน (ป้อนโดยผู้ใช้) แพทย์บางคนต้องการทำงานบางวัน / คืน (ป้อนโดยผู้ใช้) แพทย์บางคนต้องการที่จะไม่ทำงานบางวัน / คืน (ป้อนโดยผู้ใช้) ผู้ใช้ที่สงสัยคือบุคคลที่จัดการกับปฏิทินฉันกำลังพยายามสร้างโซลูชันที่จะสร้างปฏิทินโดยอัตโนมัติซึ่งเป็นไปตามข้อ จำกัด ทั้งหมด การแก้ปัญหาเป็นเพียงแค่การตั้งค่าขนาดใหญ่ป้อน "เพิ่มแพทย์" และ "เพิ่มข้อ จำกัด " สำหรับแพทย์แต่ละคนจากนั้นปุ่ม "สร้างปฏิทิน" มันพื้นฐานจริงๆสำหรับผู้ใช้ ปัญหาของฉัน: ฉันไม่แน่ใจว่าจะสร้างการวางแผนที่แท้จริงได้อย่างไรฉันได้อ่านเกี่ยวกับ Neural Networks, …

2
อัลกอริทึมเพื่อผสานสองอาร์เรย์ที่เรียงลำดับด้วยจำนวนการเปรียบเทียบขั้นต่ำ
ป.ร. ให้ไว้สองอาร์เรย์เรียง, BประเภทTที่มีขนาดnและม. ฉันกำลังมองหาอัลกอริทึมที่ผสานสองอาร์เรย์เข้ากับอาร์เรย์ใหม่ (ขนาดสูงสุด n + m) หากคุณมีการเปรียบเทียบราคาถูกนี่ค่อนข้างง่าย เพียงนำจากอาเรย์ที่มีอิลิเมนต์แรกที่ต่ำที่สุดจนกระทั่งหนึ่งหรือทั้งสองอาร์เรย์ถูกสำรวจอย่างสมบูรณ์จากนั้นเพิ่มอิลิเมนต์ที่เหลือ บางสิ่งเช่นนี้/programming/5958169/how-to-merge-two-sorted-arrays-into-a-sorted-array อย่างไรก็ตามสถานการณ์การเปลี่ยนแปลงเมื่อเปรียบเทียบสององค์ประกอบจะมีราคาแพงกว่าการคัดลอกองค์ประกอบจากแถวแหล่งที่มาที่ไปยังอาร์เรย์เป้าหมาย ตัวอย่างเช่นคุณอาจมีอาร์เรย์ของจำนวนเต็มหรือสตริงที่มีความแม่นยำตามอำเภอใจซึ่งการเปรียบเทียบอาจมีราคาค่อนข้างสูง เพียงสมมติว่าการสร้างอาร์เรย์และองค์ประกอบการคัดลอกนั้นฟรีและสิ่งเดียวที่มีค่าใช้จ่ายคือการเปรียบเทียบองค์ประกอบ ในกรณีนี้คุณต้องการที่จะผสานสองอาร์เรย์มีจำนวนต่ำสุดของการเปรียบเทียบองค์ประกอบ นี่คือตัวอย่างบางส่วนที่คุณควรจะทำได้ดีกว่าอัลกอริธึมการผสานอย่างง่าย: a = [1,2,3,4, ... 1000] b = [1001,1002,1003,1004, ... 2000] หรือ a = [1,2,3,4, ... 1000] b = [0,100,200, ... 1000] มีบางกรณีที่อัลกอริทึมการผสานอย่างง่ายจะเหมาะสมที่สุดเช่น a = [1,3,5,7,9,....,999] b = [2,4,6,8,10,....,1000] ดังนั้นอัลกอริธึมจึงควรลดระดับลงอย่างงดงามและทำการเปรียบเทียบสูงสุด n + m-1 ในกรณีที่อาร์เรย์ถูกอินเตอร์ลีบหรืออย่างน้อยก็ไม่ได้แย่ลงอย่างมีนัยสำคัญ สิ่งหนึ่งที่น่าจะทำได้ดีสำหรับรายการที่มีขนาดใหญ่ต่างกันคือใช้การค้นหาแบบไบนารีเพื่อแทรกองค์ประกอบของอาร์เรย์ขนาดเล็กลงในอาร์เรย์ที่ใหญ่กว่า …

3
อัลกอริทึมการบรรจุ 3d สำหรับการจัดส่งของรายการ
ฉันได้รับงานเพื่อสร้างการประมาณค่าจัดส่งซึ่งแสดงให้เห็นว่ามีที่พักที่ดีที่สุดในกล่องน้อยที่สุด: มีชุดกล่องสี่เหลี่ยมขนาดเท่าจำนวน จำกัด ที่ทราบ มีหลายรายการ retangular โดยพลการที่จะบรรจุภายในกล่อง ควรใช้กล่องให้น้อยที่สุดเท่าที่จะทำได้ เนื่องจากการจัดส่งสองกล่อง 1x1x1 มีราคาแพงกว่ากล่องหนึ่ง 1x2x1 นี่ควรเป็นลำดับความสำคัญที่นี่ ควรปรับให้เหมาะสมเพื่อใช้กล่องขนาดเล็กที่สุดเท่าที่จะเป็นไปได้ตามลำดับความสำคัญในระดับที่สอง (เช่น: หากนำเสนอด้วยตัวเลือกระหว่างหนึ่งกล่องที่ใหญ่กว่าและสองกล่องเล็กควรเลือกกล่องที่ใหญ่กว่า) รายการสามารถหมุนได้เพื่อให้พอดีกับกล่อง แต่การหมุนต้องถูก จำกัด ด้วยการเพิ่มขึ้นที่ 45 °เป็นอย่างน้อย (ในงานวิจัยของฉันดูเหมือนว่าการกำหนดค่าบางอย่างอนุญาตให้การหมุน 45 องศาเพื่อให้พอดีกับกล่องสี่เหลี่ยมในกล่องสี่เหลี่ยมขนาดใหญ่ขึ้น) เป็น 90 °การหมุนมาตรฐานที่จะต้องดำเนินการ กล่องมีขีด จำกัด น้ำหนักและรายการมีน้ำหนักโดยพลการ (เช่น: รายการที่มีขนาด 1x1x1 สามารถมีขนาดเล็กกว่ารายการ 2x2x2 อื่น ๆ ) ฉันได้ทำการวิจัยเล็กน้อยและพบว่ามีอัลกอริทึมที่เป็นนามธรรมบางอย่างเกี่ยวกับ bin bin และปัญหาเป้หลัง เรียงลำดับรายการตามลำดับที่ลดลง (ใหญ่กว่าก่อน) ในรายการ "รายการที่จะแพ็ค" สำหรับแต่ละรายการในรายการนี้: เลือกกล่องขนาดเล็กที่อยู่ในรายการ "กล่องที่ใช้แล้ว" …

3
เป็นวิธีที่มีประสิทธิภาพในการค้นหาทศนิยมซ้ำอะไร
ฉันกำลังพยายามที่จะหาขั้นตอนวิธีการที่มีประสิทธิภาพใน Java เพื่อหาสิ่งที่เป็นส่วนหนึ่งของการทำซ้ำทศนิยมสองจำนวนเต็มaและที่ba/b เช่น. 5/7 = 0.714258 714258 .... ขณะนี้ฉันรู้วิธีการแบ่งแบบยาวเท่านั้น
24 algorithms  math 

3
การแก้ปัญหาข้อขัดแย้งสำหรับการซิงค์สองทาง
คุณจะจัดการการซิงโครไนซ์แบบสองทางระหว่างเซิร์ฟเวอร์ฐานข้อมูล 'หลัก' และเซิร์ฟเวอร์ 'รอง' จำนวนมากได้อย่างไรในการแก้ไขข้อขัดแย้งโดยเฉพาะหากการเชื่อมต่อไม่สามารถใช้ได้ตลอดเวลา ตัวอย่างเช่นฉันมีแอพมือถือที่ใช้ CoreData เป็น 'ฐานข้อมูล' บน iOS และฉันต้องการอนุญาตให้ผู้ใช้แก้ไขเนื้อหาโดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต ในเวลาเดียวกันข้อมูลนี้มีอยู่ในเว็บไซต์ที่อุปกรณ์จะเชื่อมต่อ ฉันจะทำอย่างไรถ้า / เมื่อข้อมูลในเซิร์ฟเวอร์ DB ทั้งสองมีข้อขัดแย้ง (ฉันอ้างถึง CoreData เป็นเซิร์ฟเวอร์ฐานข้อมูล แต่ฉันรู้ว่ามันเป็นสิ่งที่แตกต่างออกไปเล็กน้อย) มีกลยุทธ์ทั่วไปในการจัดการกับปัญหาประเภทนี้หรือไม่? นี่คือตัวเลือกที่ฉันคิดได้: 1. ใช้ข้อมูลฝั่งไคลเอ็นต์เป็นลำดับความสำคัญที่สูงขึ้น 2. เหมือนกันกับฝั่งเซิร์ฟเวอร์ 3. พยายามแก้ไขข้อขัดแย้งด้วยการทำเครื่องหมายการประทับเวลาการแก้ไขของแต่ละฟิลด์และทำการแก้ไขล่าสุด แม้ว่าฉันจะแน่ใจว่าตัวเลือกที่ 3 จะเปิดห้องสำหรับการทำลายข้อมูลที่รุนแรง ฉันรู้ว่าทฤษฎีบท CAP เกี่ยวข้องกับเรื่องนี้ แต่ฉันต้องการความมั่นคงในที่สุดเท่านั้นดังนั้นมันจึงไม่ได้ออกกฎสมบูรณ์ใช่ไหม? คำถามที่เกี่ยวข้อง: ที่ดีที่สุดรูปแบบการปฏิบัติสำหรับการประสานข้อมูลแบบสองทาง คำตอบที่สองสำหรับคำถามนี้บอกว่าคงไม่สามารถทำได้

4
นักพัฒนาควรรู้อัลกอริทึมและโครงสร้างข้อมูลใดบ้าง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการ4 ปีที่แล้ว ฉันต้องการเป็นนักพัฒนา Java องค์กรที่ประสบความสำเร็จ อัลกอริทึมและโครงสร้างข้อมูลใดที่ฉันควรมีประสบการณ์ คุณจะแนะนำหนังสืออะไรให้ฉัน ในการเป็นผู้พัฒนา Java ที่ประสบความสำเร็จฉันจำเป็นต้องรู้อัลกอริธึมขั้นสูงทั้งหมดเช่นที่ได้รับในCLRSหรือไม่? คุณสามารถแนะนำรายการหัวข้อที่ฉันควรเรียนรู้ตามลำดับจากมากไปน้อย ฉันต้องรู้ไหม: ที่ไหน? เรียงลำดับ? กราฟ / ต้นไม้? etc?

5
มีอัลกอริธึมการค้นหาที่ดีสำหรับอักขระเดี่ยวหรือไม่?
ฉันรู้อัลกอริธึมการจับคู่สตริงพื้นฐานหลายอย่างเช่น KMP หรือ Boyer-Moore แต่สิ่งเหล่านี้วิเคราะห์รูปแบบก่อนค้นหาอย่างไรก็ตามถ้ามีตัวอักษรตัวเดียวก็ไม่ได้วิเคราะห์อะไรมากมาย ดังนั้นมีอัลกอริทึมที่ดีกว่าการค้นหาที่ไร้เดียงสาของการเปรียบเทียบอักขระทุกตัวของข้อความหรือไม่

8
ฟังก์ชั่นรับประกันว่าจะไม่ส่งคืนค่าเดิมสองครั้ง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา นี่เป็นคำถามที่ฉันถูกถามในการสัมภาษณ์งานและฉันไม่สามารถหาคำตอบที่พวกเขากำลังมองหาดังนั้นฉันหวังว่าบางคนที่นี่อาจมีความคิดบางอย่าง เป้าหมายคือการเขียนฟังก์ชั่นที่รับประกันว่าจะไม่ส่งคืนค่าเดิมสองครั้ง สมมติว่าฟังก์ชั่นนี้จะสามารถเข้าถึงได้โดยหลายเครื่องพร้อมกัน ความคิดของฉันคือการกำหนดรหัสเฉพาะให้แต่ละเครื่องแล้วส่งค่านั้นไปยังฟังก์ชันตัวสร้างค่าที่ไม่ซ้ำกัน: var i = 0; function uniq(process_id, machine_id) { return (i += 1).toString() + machine_id + "-" + process_id; } สิ่งนี้จะหลีกเลี่ยงการตกออกมาจากสภาพการแข่งขันเนื่องจากแม้ว่ากระบวนการสองกระบวนการขึ้นไปอ่านค่าเดียวกัน แต่ค่าiส่งคืนแต่ละครั้งจะถูกติดแท็กการรวมกันที่ไม่ซ้ำกันของ id กระบวนการและรหัสเครื่อง อย่างไรก็ตามผู้สัมภาษณ์ของฉันไม่ชอบคำตอบนี้เพราะการนำเครื่องอื่นมาใช้ออนไลน์เกี่ยวข้องกับการกำหนดรหัส ใครจะคิดวิธีอื่นในการแก้ปัญหานี้ที่ไม่เกี่ยวข้องกับการกำหนดค่าเครื่องแต่ละเครื่องให้มีรหัสเฉพาะหรือไม่? ฉันต้องการคำตอบในกรณีที่คำถามนี้เกิดขึ้นอีกครั้ง ขอบคุณ

7
อัลกอริทึมใดที่คุณจะใช้เพื่อความคล้ายคลึงกันของสตริงมากที่สุด
ฉันกำลังออกแบบปลั๊กอินเพื่อระบุเนื้อหาในหน้าเว็บต่างๆโดยอิงตามที่อยู่ ดังนั้นฉันอาจมีที่อยู่เดียวซึ่งดูเหมือน: 1 someawesome street, anytown, F100 211 หลังจากนี้ฉันอาจพบที่อยู่นี้ในรูปแบบที่แตกต่างกันเล็กน้อย 1 someawesome street, F100 211, หรืออาจคลุมเครือ someawesome street F100 เทคนิคเหล่านี้เป็นที่อยู่เดียวกัน แต่มีระดับความคล้ายคลึงกัน ฉันต้องการ a) สร้างตัวระบุที่ไม่ซ้ำกันสำหรับแต่ละที่อยู่เพื่อทำการค้นหาและ b) ค้นหาว่าที่อยู่ที่คล้ายกันปรากฏขึ้นเมื่อใด ฉันควรดูอัลกอริทึม / เทคนิค / สตริงใด ระยะทางของ Levenshtein ดูเหมือนเป็นตัวเลือกที่ชัดเจน แต่สงสัยว่ามีวิธีการอื่นใดที่จะให้ยืมตัวเองที่นี่

2
วิธีทั่วไปในการแปลงลูป (ในขณะ / สำหรับ) การเรียกซ้ำหรือจากการวนซ้ำเป็นลูป?
ปัญหานี้เน้นไปที่อัลกอริทึมเป็นหลักซึ่งอาจเป็นสิ่งที่เป็นนามธรรมและเป็นวิชาการ ตัวอย่างคือการเสนอความคิดฉันต้องการวิธีการทั่วไปดังนั้นตัวอย่างจะใช้เพื่อทำให้เราชัดเจนยิ่งขึ้นเกี่ยวกับความคิดของคุณ โดยทั่วไปแล้วการวนซ้ำสามารถแปลงเป็นแบบวนซ้ำได้ เช่น: for(int i=1;i<=100;++i){sum+=i;} และ recursive ที่เกี่ยวข้องคือ: int GetTotal(int number) { if (number==1) return 1; //The end number return number+GetTotal(number-1); //The inner recursive } และท้ายที่สุดเพื่อลดความซับซ้อนนี้จำเป็นต้องเรียกซ้ำแบบหาง: int GetTotal (int number, int sum) { if(number==1) return sum; return GetTotal(number-1,sum+number); } อย่างไรก็ตามกรณีส่วนใหญ่นั้นไม่ใช่เรื่องง่ายที่จะตอบและวิเคราะห์ สิ่งที่ฉันอยากรู้คือ: 1) เราสามารถหา "วิธีการทั่วไปทั่วไป" ในการแปลงลูป (สำหรับ / ในขณะที่……) เป็นแบบเรียกซ้ำได้หรือไม่? …

8
คุณจะได้รับไฟล์ซึ่งมีตัวเลขที่เป็นไปได้ทั้งหมดในสถาปัตยกรรม 32 บิต หมายเลข 4 หายไปจากไฟล์นั้น ค้นหา 4 หมายเลขที่หายไป
นี่เป็นคำถามสัมภาษณ์ที่ฉันวิ่งข้ามไปสองสามครั้งและฉันไม่แน่ใจว่าจะแก้ปัญหาอย่างไรเพราะตัวเลขสี่ตัวนั้นหายไป ฉันคุ้นเคยกับอัลกอริธึมในการค้นหาตัวเลขหนึ่งหรือสองตัวที่หายไป แต่ฉันไม่เห็นวิธีที่จะทำให้เป็นหนึ่งในสี่
22 algorithms 

4
เมื่อพูดฉันจะพูดได้อย่างไรว่าลำดับความซับซ้อนของเวลาของอัลกอริทึมคือ O (N log N)
คำใดที่ฉันสามารถใช้เพื่ออธิบายบางสิ่งบางอย่างที่มีความซับซ้อน O (N log N) ตัวอย่างเช่น: O (1): คงที่ O (บันทึก N): ลอการิทึม O (N): เป็นเส้นตรง O (N log N): ?????? O (N 2 ): กำลังสอง O (N 3 ): ลูกบาศก์

3
วิธีใช้การสลับแบบถ่วงน้ำหนัก
ฉันเพิ่งเขียนโค้ดบางอย่างที่ฉันคิดว่าไม่มีประสิทธิภาพมาก แต่เนื่องจากมีเพียงไม่กี่ค่าฉันจึงยอมรับ อย่างไรก็ตามฉันยังคงสนใจอัลกอริทึมที่ดีกว่าสำหรับสิ่งต่อไปนี้: รายการของวัตถุ X แต่ละชิ้นจะถูกกำหนดเป็น "น้ำหนัก" สรุปน้ำหนัก สร้างตัวเลขสุ่มจาก 0 ถึงผลรวม วนซ้ำผ่านวัตถุลบน้ำหนักออกจากผลรวมจนกว่าผลรวมจะไม่เป็นบวก เอาวัตถุออกจากรายการแล้วเพิ่มลงในส่วนท้ายของรายการใหม่ รายการ 2,4 และ 5 ต้องใช้nเวลาดังนั้นมันจึงเป็นO(n^2)อัลกอริธึม สามารถปรับปรุงได้ไหม ตัวอย่างของการสลับแบบถ่วงน้ำหนักองค์ประกอบมีโอกาสมากขึ้นที่จะอยู่ข้างหน้าด้วยน้ำหนักที่สูงขึ้น ตัวอย่าง (ฉันจะสร้างตัวเลขสุ่มเพื่อทำให้เป็นจริง): 6 สิ่งของที่มีน้ำหนัก 6,5,4,3,2,1; ผลรวมคือ 21 ฉันเลือก 19: 19-6-5-4-3-2 = -1ดังนั้น 2 ไปในตำแหน่งแรกน้ำหนักตอนนี้ 6,5,4,3,1; ผลรวมคือ 19 ฉันเลือก 16: 16-6-5-4-3 = -2ดังนั้น 3 ไปในตำแหน่งที่สองตอนนี้น้ำหนักอยู่ที่ 6,5,4,1; ผลรวมคือ 16 ฉันเลือก 3: 3-6 …
22 algorithms 

12
จะเขียนล่ามคำสั่ง / parser ได้อย่างไร?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา ปัญหา: เรียกใช้คำสั่งในรูปแบบของสตริง ตัวอย่างคำสั่ง: /user/files/ list all; เทียบเท่ากับ: /user/files/ ls -la; อีกอันหนึ่ง: post tw fb "HOW DO YOU STOP THE TICKLE MONSTER?;" เทียบเท่ากับ: post -tf "HOW DO YOU STOP THE TICKLE MONSTER?;" ทางออกปัจจุบัน: tokenize string(string, array); switch(first item in array) …

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