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

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

2
เวลาที่คาดหวังและเวลาเฉลี่ยของอัลกอริทึมหมายถึงอะไร
สมมติว่าเราต้องการวิเคราะห์เวลาทำงานของอัลกอริทึม บางครั้งเราบอกว่าเราต้องการหาเวลาทำงานของอัลกอริทึมเมื่อขนาดอินพุตเป็น n และสำหรับกรณีที่แย่ที่สุดที่เป็นไปได้มันแสดงว่า O (n) บางครั้งฉันเห็นหนังสือ / กระดาษบอกว่าเราต้องหาเวลาที่คาดหวังของอัลกอริทึม นอกจากนี้บางครั้งเวลาทำงานเฉลี่ยจะใช้ "เวลาที่คาดหวัง" คืออะไร ในกรณีใดบ้างที่มีประโยชน์ในการค้นหาเวลาที่คาดหวังแทนเวลาที่เลวร้ายที่สุด? แก้ไข : ฉันคิดว่ามีความแตกต่างเล็กน้อยระหว่างเวลาทำงานที่คาดหวังและเวลาทำงานเฉลี่ยแต่ฉันไม่แน่ใจ ผ่านโพสต์นี้ฉันต้องการทราบความแตกต่างที่แน่นอนถ้ามี

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

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

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

4
NP สมบูรณ์หรือปัญหายาก NP ในชีวิตจริง
ใครบ้างมีตัวอย่างชีวิตจริงที่พวกเขาแก้ปัญหาปัญหา NP ที่สมบูรณ์หรือปัญหาที่เกิดขึ้นเป็นประจำ (โดยการวิเคราะห์พฤติกรรมหรือไล่ล่าทางออกที่ไม่ดีหรืออะไรก็ตาม) ในงานของพวกเขา? ฉันรู้ว่ามันเกิดขึ้นในการตั้งเวลาการวางแผนการออกแบบ VLSI ฯลฯ แต่ฉันพยายามที่จะเข้าใจแนวคิดของอุตสาหกรรมหลัก ๆ ที่จ้างโปรแกรมเมอร์หรือวิศวกรในปัจจุบันที่ทำสิ่งนี้เป็นประจำ ถ้ามีใครที่จะพัฒนาความเชี่ยวชาญหรือห้องสมุดกล่าวคือการเพิ่มประสิทธิภาพ combinatorial ใครจะใช้มันเป็นส่วนหนึ่งของการเขียนโปรแกรมงาน? บัญชีส่วนตัวใด ๆ

2
จะหาชื่อที่สะกดยากได้อย่างไร?
นี่คือคำถามที่ฉันเชื่อว่าสามารถแก้ไขได้ด้วย data mining และอัลกอริธึมที่ซับซ้อน แต่ฉันก็ไม่รู้เหมือนกัน ตัวชี้ใด ๆ เกี่ยวกับแหล่งข้อมูลที่จะใช้และอัลกอริทึมที่จะนำไปใช้ใดบ้างยินดีต้อนรับ แบ็คกราวน์:ฉันเป็นชาวโรมาเนียน - ฮังการีที่คาดหวังว่าจะมีลูกด้วยภาษาโปแลนด์ - ยูเครนและไม่ได้ตั้งความคิดของเราในประเทศที่เราต้องการปักหลัก อย่างที่คุณคาดหวังการเลือกชื่อที่ให้นั้นมีความสำคัญที่สุดและมีการถกเถียงกันอย่างเผ็ดร้อน จากด้านข้างของฉันฉันยังคงมีบาดแผลจากความยุ่งยากทั้งหมดที่ฉันต้องทำเมื่อใครบางคนจะสะกดชื่อของฉันเมื่อฉันย้ายจากประเทศหนึ่งไปยังอีก ตัวอย่างเช่นหากคุณถูกเรียกว่า "เอเดรียน" คุณจะได้รับพรในโรมาเนียเพียงเพื่อจะพบว่าคุณได้รับ "เอเดรียอี " เป็นเอกสารภาษาฝรั่งเศสอย่างเป็นทางการ ดังนั้นความต้องการเพียงอย่างเดียวของฉันคือการทำให้ชื่อของทารกถูกสะกดผิดในบางประเทศในยุโรป คำแถลงปัญหา:เมื่อมีกลุ่มประเทศเช่นฝรั่งเศสเยอรมนีสวีเดนโปแลนด์และโรมาเนียค้นหารายชื่อที่ให้ไว้ซึ่งเมื่อออกเสียงอย่างถูกต้องจะไม่ถูกสะกดโดยคนในท้องถิ่น อีกอย่างเป็นทางการ: Let P (c, n)เป็นฟังก์ชั่นที่ให้ผลตอบแทนน่าจะเป็นของชื่อnถูกสะกดผิดในประเทศค ได้รับCชุดของประเทศและ p₀ความน่าจะเป็นหาNชุดของชื่อที่กำหนดเช่นว่า สำหรับn ∈ Nและc ∈ C ทั้งหมด , p (c, n) <p₀ ความคิดเริ่มต้น : ปัญหาหลักคือวิธีการใช้P (c, n) เราสามารถลองประมาณด้วยฮิวริสติก เห็นได้ชัดว่าชื่อนั้นสะกดผิดในสองกรณี: มันใช้น้อยในประเทศนั้น มันคล้ายกับชื่ออื่นที่ไม่ได้ใช้เพียงเล็กน้อยในประเทศนั้น …

4
Constant Time และ Amortized Constant Time ถือว่ามีประสิทธิภาพเทียบเท่าหรือไม่?
ฉันต้องเขียน RandomQueue ที่อนุญาตให้ผนวกและลบแบบสุ่มใน Constant Time (O (1)) ความคิดแรกของฉันคือการสำรองข้อมูลด้วย Array บางประเภท (ฉันเลือก ArrayList) เนื่องจากอาร์เรย์มีการเข้าถึงอย่างต่อเนื่องผ่านดัชนี เมื่อมองไปที่เอกสารแม้ว่าฉันรู้ว่าการเพิ่มเติมของ ArrayLists ถือเป็น Amortized Constant Time เนื่องจากการเพิ่มอาจต้องมีการจัดสรรใหม่ของอาเรย์พื้นฐานซึ่งก็คือ O (n) Amortized Constant Time และ Constant Time มีประสิทธิภาพเหมือนกันหรือไม่หรือฉันต้องดูโครงสร้างบางอย่างที่ไม่ต้องการการจัดสรรใหม่อย่างสมบูรณ์ในทุก ๆ การเติม ฉันถามสิ่งนี้เพราะโครงสร้างแบบอาเรย์กัน (ซึ่งเท่าที่ฉันรู้จะมีการเพิ่มค่าคงที่ตลอดเวลา) ฉันไม่สามารถคิดอะไรที่ตรงตามข้อกำหนด: ต้นไม้ใดก็ตามที่มีการเข้าถึง O (log n) จะดีที่สุด รายการที่เชื่อมโยงอาจมีการเพิ่ม O (1) (ถ้าการอ้างอิงไปยังหางถูกเก็บไว้) แต่การลบแบบสุ่มควรจะดีที่สุด O (n) นี่คือคำถามเต็ม ในกรณีที่ฉันเคลือบรายละเอียดที่สำคัญบางอย่าง: ออกแบบและใช้งาน RandomQueue …

9
Big O คำถามเกี่ยวกับอัลกอริทึมที่มีอัตราการขยายตัว (n ^ 2 + n) / 2
ฉันถามคำถามนี้เพราะฉันสับสนในแง่มุมหนึ่งเกี่ยวกับสัญกรณ์ O ใหญ่ ฉันใช้หนังสือโครงสร้างข้อมูลและบทคัดย่อกับ Javaโดย Frank Carrano ในบทเกี่ยวกับ "ประสิทธิภาพของอัลกอริทึม" เขาแสดงอัลกอริทึมต่อไปนี้: int sum = 0, i = 1, j = 1 for (i = 1 to n) { for (j = 1 to i) sum = sum + 1 } สมัยก่อนเขาอธิบายขั้นตอนวิธีนี้มีอัตราการเติบโต(n 2 + n) / 2 ซึ่งดูง่าย อย่างไรก็ตามมีการระบุไว้ว่า(n 2 + n) …
16 algorithms  big-o 

5
อัลกอริทึมสำหรับช่วงการทับซ้อนของแบนราบ
ฉันกำลังมองหาวิธีที่ดีในการทำให้แบน (แยก) รายการของช่วงตัวเลขที่อาจทับซ้อนกัน ปัญหาคล้ายกันมากกับคำถามนี้: วิธีที่เร็วที่สุดในการแยกช่วงวันที่ซ้อนทับกันและอื่น ๆ อีกมากมาย อย่างไรก็ตามช่วงนั้นไม่ได้เป็นจำนวนเต็มเท่านั้นและฉันกำลังมองหาอัลกอริทึมที่เหมาะสมซึ่งสามารถนำไปใช้งานได้อย่างง่ายดายใน Javascript หรือ Python เป็นต้น ข้อมูลตัวอย่าง: ตัวอย่างการแก้ไข: ขออภัยหากนี่เป็นสิ่งที่ซ้ำกัน แต่ฉันยังหาวิธีแก้ปัญหาไม่ได้

2
อัลกอริทึมสำหรับการค้นหาแท็กที่รวดเร็ว
ปัญหาดังต่อไปนี้ มีชุดเอนทิตี้เรียบง่าย E แต่ละชุดมีแท็ก T ติดอยู่ แต่ละเอนทิตีอาจมีแท็กจำนวนเท่าใดก็ได้ จำนวนเอนทิตีทั้งหมดอยู่ใกล้ 100 ล้านและจำนวนแท็กทั้งหมดประมาณ 5000 ดังนั้นข้อมูลเริ่มต้นจะเป็นดังนี้: E1 - T1, T2, T3, ... Tn E2 - T1, T5, T100, ... Tk .. Ez - T10, T12, ... Tl ข้อมูลเริ่มต้นนี้มีการปรับปรุงค่อนข้างน้อย แอพของฉันสร้างนิพจน์เชิงตรรกะบนแท็กเช่นนี้: T1 & T2 & T3 | (T5 &! T6) สิ่งที่ฉันต้องการคือการคำนวณจำนวนเอนทิตีที่ตรงกับนิพจน์ที่กำหนด (หมายเหตุ - ไม่ใช่เอนทิตี แต่เป็นเพียงตัวเลข) อันนี้อาจไม่ถูกต้องแน่นอน …

7
การสร้างการแสดงออกทางคณิตศาสตร์แบบสุ่ม
ฉันมีความคิดนี้ในหัวของฉันเพื่อสร้างและประเมินนิพจน์ทางคณิตศาสตร์แบบสุ่ม ดังนั้นฉันจึงตัดสินใจที่จะถ่ายภาพและทำอัลกอริธึมก่อนที่จะเขียนโค้ดเพื่อทดสอบ ตัวอย่าง: นี่คือตัวอย่างของนิพจน์ที่ฉันต้องการสร้างแบบสุ่ม: 4 + 2 [easy] 3 * 6 - 7 + 2 [medium] 6 * 2 + (5 - 3) * 3 - 8 [hard] (3 + 4) + 7 * 2 - 1 - 9 [hard] 5 - 2 + 4 * (8 - (5 + …
16 algorithms 

6
ตัวรวบรวมข้อมูลขยะป้องกันไม่ให้หน่วยความจำทั้งหมดถูกสแกนในทุกการรวบรวมอย่างไร
ตัวรวบรวมขยะ (อย่างน้อย Mono's และ. NET) บางตัวมีพื้นที่หน่วยความจำระยะสั้นซึ่งสแกนบ่อยและพื้นที่หน่วยความจำรองที่สแกนน้อยกว่า โมโนเรียกสถานเลี้ยงเด็กแห่งนี้ เพื่อค้นหาว่าวัตถุใดที่สามารถกำจัดได้พวกมันจะสแกนวัตถุทั้งหมดที่เริ่มต้นจากรากสแต็คและรีจิสเตอร์และกำจัดวัตถุทั้งหมดที่ไม่ได้ถูกอ้างอิงอีกต่อไป คำถามของฉันคือพวกเขาป้องกันไม่ให้หน่วยความจำที่ใช้งานทั้งหมดถูกสแกนในการรวบรวมทุกครั้งหรือไม่ โดยหลักการแล้ววิธีเดียวที่จะค้นหาว่าวัตถุใดไม่ได้ใช้งานอีกต่อไปคือการสแกนวัตถุทั้งหมดและการอ้างอิงทั้งหมด อย่างไรก็ตามนี่จะเป็นการป้องกันไม่ให้ระบบปฏิบัติการแลกเปลี่ยนหน่วยความจำแม้ว่าแอปพลิเคชั่นจะไม่ได้ใช้งานและรู้สึกว่าเป็นงานที่ต้องทำจำนวนมากเช่นกันสำหรับ "Nursery Collection" ไม่รู้สึกว่าพวกเขาชนะมากจากการใช้เรือนเพาะชำ ฉันทำบางสิ่งบางอย่างหายไปหรือว่าตัวรวบรวมขยะกำลังสแกนวัตถุทั้งหมดและทุกการอ้างอิงทุกครั้งที่มีการรวบรวมหรือไม่

10
ต้องการ Python มากกว่า C สำหรับการเขียนโปรแกรมอัลกอริทึม
ฉันกำลังศึกษาอัลกอริธึมเล็กน้อยและดูที่ไซต์อย่าง SPOJ.pl TopCoder เป็นต้นฉันเคยเห็นว่าโปรแกรมเมอร์ชอบ C หรือ C ++ สำหรับการแข่งขันเขียนโปรแกรมอัลกอริทึมส่วนใหญ่ ตอนนี้ฉันมีปัญหาบางอย่างเมื่อเร็ว ๆ นี้ ฉันรู้ทั้ง C และ Python เล็กน้อยและเมื่อพยายามเขียนรหัสฉันดูเหมือนจะชอบ Python มากกว่า C สำหรับอัลกอริธึมส่วนใหญ่ ทุกครั้งที่ฉันนั่งลงเพื่อเขียนรหัสใน CI ยอมแพ้หลังจากนั้นประมาณ 15 นาทีเพราะฉันพบว่ามันยุ่งยากเกินไปและมีแนวโน้มที่จะย้ายไปยังงูใหญ่ การผ่านการฝึกอบรมพอยน์เตอร์พอยน์เตอร์และอื่น ๆ ดูเหมือนจะเป็นเวลาที่ไร้ประโยชน์ที่ฉันสามารถใช้คิดเกี่ยวกับอัลกอริทึมได้จริง ตอนนี้ฉันรู้แล้วและได้ยินจากผู้คนมากมายว่า C เป็นภาษาที่สำคัญมากและเป็นขนมปังและเนยของโปรแกรมเมอร์จำนวนมาก สิ่งที่ฉันอยากรู้คือวิธีการของฉันนี้มีข้อบกพร่อง / ผลกระทบ / ข้อเสียอื่น ๆ หรือไม่ นี่ไม่ใช่การอภิปราย Python vs C; นี่เป็นคำถามเกี่ยวกับวิธีปฏิบัติที่เจาะจงของการเลือกไพ ธ อนมากกว่า C เนื่องจากความสะดวกในการใช้งานจะส่งผลกระทบต่อฉันหรือโปรแกรมเมอร์ / นักวิทยาศาสตร์คอมพิวเตอร์คนอื่น …

2
อัลกอริทึม "bucket-fill" ที่ดีที่สุดคืออะไร?
ฉันค่อนข้างใหม่กับการประมวลผลภาพและตอนนี้ฉันกำลังทำงานกับแอพพลิเคชั่นที่คล้ายสีที่จะมีการเติมเต็มถัง อย่างไรก็ตามฉันไม่ทราบว่าอัลกอริทึมที่ดีที่สุดสำหรับที่เก็บข้อมูลเติมคืออะไร ฉันนำตัวอย่างที่ฉันพบจากไซต์นี้มาใช้ แต่พบปัญหาลูปไม่สิ้นสุดเมื่อผู้ใช้พยายามที่จะทำการเติมพื้นที่ที่เต็มถังแล้วด้วยสีเดียวกัน ขณะนี้ฉันกำลังแก้ไขปัญหาโดยการเติมซ้ายขวาขึ้นและลง; อย่างไรก็ตามฉันทำเพื่อที่ว่าเมื่อพิกเซลได้รับการกรอกในด้านซ้ายก็ไม่สามารถเติมไปทางขวาซึ่งหมายถึงรูปร่างเช่น: จะไม่ถูกกรอกอย่างถูกต้องหากมีการใช้เครื่องมือฝากข้อมูลที่จุดสีแดง ดังนั้นฉันหวังว่าจะมีบางคนรู้อัลกอริทึมหรือลิงค์ไปยังที่จะแก้ไขปัญหาเหล่านี้ทั้งหมด ข้อมูลเพิ่มเติม:สิ่งนี้จะดำเนินการโดยใช้ Javascript เป็นเครื่องมือทาสี มันจะถูกใช้ออนไลน์โดยใช้องค์ประกอบ Canvas
16 algorithms 

3
เป็นไปได้หรือไม่ที่จะเขียนฟังก์ชั่นย้อนกลับของสตริงทั่วไปที่เหมาะกับการแปลท้องถิ่นและประเภทสตริงทั้งหมด?
ฉันแค่ดูการนำเสนอJon Skeet (กับ Tony the Pony) จาก Dev-Days ถึงแม้ว่า "ฟังก์ชั่นเขียนกลับสตริง" กำลังเขียนรหัสสัมภาษณ์ 101 - ฉันไม่แน่ใจว่าจริง ๆ แล้วมันเป็นไปได้ที่จะเขียนฟังก์ชั่นย้อนกลับของสตริงทั่วไปแน่นอนไม่ได้หนึ่งที่ทำงานในท้องถิ่นทั้งหมดและทุกประเภทสตริง นอกเหนือจากการตรวจสอบว่าสตริงอินพุตคือ ascii, UTF8, UTF16 (ความยาวคงที่และผันแปร) เป็นต้น มี 'ใช้การเน้นเสียงกับอักขระถัดไป' (U + 0301) รหัสที่จอนเน้นไว้ จากนั้นจะมีลิ้นที่อาจแสดงหรือไม่แสดงหรือเข้ารหัสเป็นอักขระคู่ ดูเหมือนว่า "การย้อนกลับสตริง" เป็นหนึ่งในงานด้านวิทยาศาสตร์คอมพิวเตอร์ที่ยากขึ้น!

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