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

เกี่ยวข้องกับระดับความยากของการคำนวณหรือเวลาทำงานแบบไม่แสดงอาการของอัลกอริทึม

7
การวิเคราะห์อัลกอริทึมโดยการนับฟลอพล้าสมัยหรือไม่
ในหลักสูตรการวิเคราะห์เชิงตัวเลขของฉันฉันเรียนรู้ที่จะวิเคราะห์ประสิทธิภาพของอัลกอริทึมโดยการนับจำนวนของการดำเนินการจุดลอยตัว (flops) ที่พวกเขาต้องการเทียบกับขนาดของปัญหา ตัวอย่างเช่นในข้อความของ Trefethen & Bau ใน Numerical Linear Algebra มีแม้กระทั่งรูปภาพที่ดูแบบ 3 มิติของจำนวนฟล็อป ตอนนี้มันเป็นแฟชั่นที่จะกล่าวว่า "flops ฟรี" เพราะเวลาแฝงของหน่วยความจำในการดึงข้อมูลใด ๆ ที่ไม่ได้อยู่ในแคชนั้นยิ่งใหญ่กว่าค่าใช้จ่ายของ flop แต่เรายังสอนนักเรียนให้นับจำนวนอย่างน้อยในหลักสูตรการวิเคราะห์เชิงตัวเลข เราควรสอนพวกเขาให้นับการเข้าถึงหน่วยความจำแทนหรือไม่ เราจำเป็นต้องเขียนตำราใหม่หรือไม่ หรือการเข้าถึงหน่วยความจำเฉพาะเกินไปที่จะใช้เวลากับเครื่อง? แนวโน้มระยะยาวจะเป็นอย่างไรในแง่ของการไม่ว่าจะเป็น flops หรือการเข้าถึงหน่วยความจำเป็นคอขวด? หมายเหตุ: คำตอบบางข้อด้านล่างดูเหมือนจะตอบคำถามต่าง ๆ เช่น "ฉันควรเขียนการใช้งานของฉันใหม่อีกครั้งเพื่อบันทึก flops สองสามครั้งหรือปรับปรุงประสิทธิภาพแคชหรือไม่" แต่สิ่งที่ฉันถามนั้นเป็นไปตามแนวของ " มีประโยชน์มากกว่าหรือไม่ที่จะประเมินความซับซ้อนของอัลกอริทึมในแง่ของการดำเนินการทางคณิตศาสตร์หรือการเข้าถึงหน่วยความจำ ?"

6
ปัญหา n-body ความโน้มถ่วงสามารถแก้ไขในแบบคู่ขนานได้อย่างไร?
ปัญหา n-body ความโน้มถ่วงสามารถแก้ไขเป็นตัวเลขแบบขนานได้อย่างไร? การแลกเปลี่ยนความซับซ้อนที่มีความแม่นยำเป็นไปได้หรือไม่? ความแม่นยำมีอิทธิพลต่อคุณภาพของรุ่นอย่างไร

3
ระบบเส้นตรงแบบสมมาตรและคงที่สามารถแก้ไขได้ในเวลาสมการกำลังสองหลังจากการคำนวณล่วงหน้าหรือไม่
คือมีO(n3+n2k)O(n3+n2k)O(n^3+n^2 k)วิธีการที่จะแก้ปัญหาkkkเชิงเส้นระบบของฟอร์ม(Di+A)xi=bi(Di+A)xi=bi(D_i + A) x_i = b_iที่เป็นเมทริกซ์เมจิคงที่และD ฉันเป็นเมทริกซ์ทแยงมุมบวก?AAADiDiD_i ตัวอย่างเช่นถ้าแต่ละDiDiD_iเป็นสเกลาร์ก็พอเพียงที่จะคำนวณ SVD ของ อย่างไรก็ตามการแบ่งนี้สำหรับDทั่วไปเนื่องจากการขาดการสับเปลี่ยนAAADDD อัปเดต : คำตอบคือ "ไม่" ไม่มีใครมีสัญชาตญาณที่น่าสนใจว่าทำไม? ไม่มีคำตอบหมายความว่าไม่มีวิธีที่ไม่จำเป็นในการบีบอัดข้อมูลระหว่างผู้ให้บริการที่ไม่เปิดใช้งานสองคน มันไม่ได้เป็นเรื่องที่น่าประหลาดใจนัก แต่มันเป็นการดีที่จะเข้าใจมันมากขึ้น

3
การแข่งขันการเขียนโปรแกรมทางวิทยาศาสตร์
ฉันมักจะแข่งขันกันอย่างต่อเนื่องในชื่อ "การแข่งขันการเขียนโปรแกรม" ซึ่งคุณแก้ปัญหาอัลกอริทึมที่ยากกับรหัสของคุณเองและทักษะการแก้ปัญหาในช่วงเวลา จำกัด สำหรับตัวอย่างอ้างอิงของสิ่งที่อาจมีหน้าตาให้ค้นหาการแข่งขันเช่น Google Code Jam หรือ ACM-ICPC (ถ้าคุณรู้ว่าการแข่งขันการเขียนโปรแกรมคืออะไรคุณสามารถข้ามย่อหน้าต่อไปนี้) ในการแข่งขันเหล่านี้คุณสามารถแข่งขันเป็นรายบุคคลหรือเป็นทีมได้ที่ไซต์จริงหรือออนไลน์และเป้าหมายคือการแก้ปัญหาให้ได้มากที่สุดก่อนการแข่งขันจะสิ้นสุดลง ปัญหาแต่ละข้อเกี่ยวข้องกับข้อ จำกัด บางอย่างที่โซลูชันของคุณต้องปฏิบัติตามเช่นเวลาใช้งานหน่วยความจำที่ใช้ ฯลฯ ปัญหานั้นอาจมีตั้งแต่ "วิธีแก้ปัญหาที่ชัดเจน" ถึง "ต้องการความรู้ที่ดี เป้าหมายหลักคือความสนุก แต่บางครั้งความสำเร็จอาจนำไปสู่รางวัลเงินสดเกียรติยศและบางทีแม้กระทั่งการสัมภาษณ์กับนายหน้าของ บริษัท ชั้นนำอย่าง Google (ถ้าคุณข้ามย่อหน้าข้างต้นหยุดข้ามเพราะคำถามของฉันมาที่นี่) ผ่านการแข่งขันการเขียนโปรแกรมฉันสามารถพัฒนาความสนใจของแท้สำหรับอัลกอริทึมวิทยาการคอมพิวเตอร์โดยทั่วไปและความหมายโดยรวมของความหมายเมื่อมันมาถึงการเขียนโปรแกรมและพัฒนาทักษะการแก้ปัญหาของฉัน ฉันต้องการทำเช่นนั้นในการคำนวณทางวิทยาศาสตร์เช่นกัน คำถาม: มีการแข่งขันใด ๆ ในหลอดเลือดดำเดียวกันกับชนิดอัลกอริธึมล้วนๆหรือไม่ แต่เน้นที่การวิเคราะห์เชิงตัวเลขการปรับให้เหมาะสมและอื่น ๆ หรือไม่? ฉันลองใช้ Google แล้ว แต่หาไม่เจอในแวบแรก ... ภาคผนวก:ฉันได้รับคำแนะนำให้ตรวจสอบ Project Euler แต่นั่นไม่ใช่สิ่งที่ฉันกำลังมองหา สิ่งที่ฉันต้องการคือเวทีที่จะฝึกการใช้ตัวเลขที่ "สกปรก" มากกว่าเช่นการสร้างสรรค์ด้วยวิธีการแก้ปัญหาของ pde การแก้ปัญหาการหาค่าเหมาะที่สุดและอื่น ๆ …

1
ความซับซ้อนของการจำลอง MD
ฉันยังใหม่กับการจำลองโมเลกุล (MD) ความซับซ้อนของการจำลองพลวัตโมเลกุลในแง่ของเวลาการจำลองคืออะไร? กล่าวอีกนัยหนึ่งถ้าฉันต้องการเพิ่มเวลาจำลองจาก 10 nanoseconds เป็น 20 nanoseconds ฉันคาดหวังอะไรในแง่ของการเพิ่มขึ้นของ runtime?

3
อัลกอริทึมโทมัสเป็นวิธีที่เร็วที่สุดในการแก้ปัญหาระบบเชิงเส้นที่กระจัดกระจายในแนวทแยงมุมสมมาตร
ฉันสงสัยว่าอัลกอริธึมของ Thomas นั้นเป็นวิธีที่เร็วที่สุด (พิสูจน์ได้หรือไม่) เพื่อแก้ปัญหาระบบ tridiagonal ที่กระจัดกระจายในแนวทแยงมุมแบบสมมาตรในแง่ของความซับซ้อนของอัลกอริทึม ฉันรู้ว่าทั้งอัลกอริธึมของ Thomas และ Multigrid นั้นมีความซับซ้อนแต่ปัจจัยคงที่สำหรับ Multigrid นั้นน้อยกว่านี้หรือไม่ สำหรับฉันดูเหมือนว่า multigrid อาจไม่เร็วกว่านี้ แต่ฉันก็ไม่คิดบวกO ( n )O(n)O(n) หมายเหตุ: ฉันกำลังพิจารณากรณีที่เมทริกซ์มีขนาดใหญ่มาก ยอมรับได้ทั้งวิธีโดยตรงหรือแบบวนซ้ำ

2
“ เทคนิคปัจจัยร่วม” ในการแปลงเมทริกซ์มีความสำคัญในทางปฏิบัติหรือไม่?
ชื่อเป็นคำถาม เทคนิคนี้เกี่ยวข้องกับการใช้ "เมทริกซ์ของแฟคเตอร์" หรือ "adjugate เมทริกซ์" และให้สูตรที่ชัดเจนสำหรับส่วนประกอบของค่าผกผันของเมทริกซ์จตุรัส มันไม่ใช่เรื่องง่ายที่จะทำด้วยมือสำหรับเมทริกซ์ที่มีขนาดใหญ่กว่าการพูดที่3×33×33\times 3 3 สำหรับn×nn×nn\times nเมทริกซ์จะต้องมีการคำนวณปัจจัยของเมทริกซ์ของตัวเองและการคำนวณn2n2n^2ปัจจัยของ(n−1)×(n−1)(n−1)×(n−1)(n-1)\times(n-1)การฝึกอบรม ดังนั้นฉันเดาว่ามันไม่ได้มีประโยชน์สำหรับแอปพลิเคชัน แต่ฉันต้องการการยืนยัน ฉันไม่ได้ถามเกี่ยวกับความสำคัญทางทฤษฎีของเทคนิคในการพิสูจน์ทฤษฎีบทเกี่ยวกับเมทริกซ์

4
FLOP นับสำหรับฟังก์ชั่นห้องสมุด
เมื่อประเมินจำนวน FLOPs ในฟังก์ชั่นที่เรียบง่ายมักจะสามารถลงไปในการแสดงออกของผู้ประกอบการทางคณิตศาสตร์ขั้นพื้นฐานรับทราบ อย่างไรก็ตามในกรณีของคำแถลงทางคณิตศาสตร์ที่เกี่ยวข้องกับการแบ่งคู่เราไม่สามารถทำสิ่งนี้ได้และคาดว่าจะสามารถเปรียบเทียบกับ FLOP นับได้จากฟังก์ชั่นที่มีการเพิ่มเติมและการคูณเท่านั้น สถานการณ์ยิ่งแย่ลงเมื่อการดำเนินการถูกนำไปใช้ในไลบรารี ดังนั้นจึงจำเป็นที่จะต้องมีแนวคิดที่สมเหตุสมผลเกี่ยวกับประสิทธิภาพของฟังก์ชั่นพิเศษ โดยฟังก์ชั่นพิเศษเราหมายถึงสิ่งที่ชอบ: ประสบการณ์ () sqrt () บาป / cos / สีน้ำตาล () ซึ่งมักจะมีให้โดยไลบรารีระบบ การกำหนดความซับซ้อนของสิ่งเหล่านี้จะทำให้เกิดความสับสนมากยิ่งขึ้นจากข้อเท็จจริงที่ว่าหลายคนปรับตัวได้และมีความซับซ้อนขึ้นอยู่กับอินพุต ตัวอย่างเช่นการใช้งานที่มีเสถียรภาพของตัวเลข() มักจะ rescale แบบปรับตัวและใช้การค้นหา ความประทับใจครั้งแรกของฉันที่นี่คือสิ่งที่ดีที่สุดในกรณีนี้คือตรวจสอบพฤติกรรมโดยเฉลี่ยของฟังก์ชั่น แน่นอนว่าการสนทนาทั้งหมดนี้ขึ้นอยู่กับสถาปัตยกรรมเป็นอย่างมาก สำหรับการสนทนานี้เราสามารถ จำกัด ตัวเราให้เป็นสถาปัตยกรรมที่มีวัตถุประสงค์ทั่วไปแบบทั่วไปและยกเว้นสิ่งที่มีหน่วยฟังก์ชั่นพิเศษ (GPU ฯลฯ ) เราสามารถค้นหาความพยายามที่ค่อนข้างง่ายในการสร้างมาตรฐานเหล่านี้สำหรับสถาปัตยกรรมเฉพาะเพื่อประโยชน์ของระบบและการเปรียบเทียบระบบ แต่ไม่สามารถยอมรับได้หากมีใครสนใจวิธีการและประสิทธิภาพของวิธีการ วิธีการใดในการพิจารณาความซับซ้อนของ FLOP ของฟังก์ชั่นเหล่านี้ถือเป็นที่ยอมรับ มีข้อผิดพลาดที่สำคัญหรือไม่?

2
ต้นทุนการคำนวณของการดำเนินงาน mpi_allgather เปรียบเทียบกับการดำเนินการรวบรวม / กระจายอย่างไร
ฉันกำลังทำงานกับปัญหาที่สามารถทำให้ขนานได้โดยใช้การดำเนินงาน mpi_allgather เดียวหรือหนึ่ง mpi_scatter และหนึ่งการดำเนินงาน mpi_gather การดำเนินการเหล่านี้จะถูกเรียกภายในวงขณะที่ดังนั้นพวกเขาอาจจะเรียกหลายครั้ง ในการนำไปใช้กับรูปแบบ MPI_allgather ฉันกำลังรวบรวมเวกเตอร์แบบกระจายสู่กระบวนการทั้งหมดสำหรับการแก้เมทริกซ์ที่ซ้ำกัน ในการใช้งานอื่น ๆ ฉันรวบรวมเวกเตอร์ที่กระจายไปยังโปรเซสเซอร์เดียว (โหนดรูท) แก้ไขระบบเชิงเส้นบนโปรเซสเซอร์นี้จากนั้นกระจายเวกเตอร์โซลูชันกลับสู่กระบวนการทั้งหมด ฉันอยากรู้ว่าค่าใช้จ่ายในการดำเนินการของตัวรวบรวมทั้งหมดมากกว่าการกระจายและรวมการปฏิบัติการเข้าด้วยกันอย่างมีนัยสำคัญหรือไม่ ความยาวของข้อความมีบทบาทสำคัญในความซับซ้อนหรือไม่ มันแตกต่างกันระหว่างการใช้งานของ MPI หรือไม่ แก้ไข:

3
มีความซับซ้อนระหว่าง
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามดังนั้นจึงเป็นหัวข้อสำหรับการแลกเปลี่ยนวิทยาศาสตร์ซ้อนกัน ปิดให้บริการใน5 ปีที่ผ่านมา มีระดับความซับซ้อนที่ใหญ่กว่าและเล็กกว่าหรือไม่O ( n log n )O(n)O(n)O(n)O(nlogn)O(nlog⁡n)O(n \log n)

2
ความพยายามคำนวณของอัลกอริทึม
พิจารณาปัญหาการปรับให้เหมาะสมแบบไม่มีข้อ จำกัด อย่างเข้มงวด O:=minx∈Rnf(x).O:=minx∈Rnf(x).\mathcal{O} := \min_{x \in \mathbb{R}^n} f(x).ให้แทนค่า minima ที่ไม่ซ้ำกันและเป็นการประมาณค่าเริ่มต้นที่กำหนดให้กับเราจะเรียกเวกเตอร์วิธีการแก้ปัญหาอย่างใกล้ชิดของถ้า xoptxoptx_\text{opt}x0x0x_0xopt.xopt.x_\text{opt}.xxxϵ−ϵ−\epsilon-OO\mathcal{O}||x−xopt||2||x0−xopt||2≤ϵ.||x−xopt||2||x0−xopt||2≤ϵ.\begin{equation} \frac{||x - x_{\text{opt}}||_2}{||x_0 - x_\text{opt}||_2} \leq \epsilon. \end{equation} สมมติว่ามีสองอัลกอริธึมวนซ้ำA1A1\mathcal{A}_1และA2A2\mathcal{A}_2เพื่อค้นหาϵ−ϵ−\epsilon- close solution ของOO\mathcal{O}ด้วยคุณสมบัติต่อไปนี้: สำหรับการใด ๆϵ>0,ϵ>0,\epsilon > 0,คำนวณความพยายามทั้งหมดคือความพยายามที่จำเป็นต่อการทำซ้ำ××\timesจำนวนรวมของการทำซ้ำที่จะหาϵ−ϵ−\epsilon-ทางออกที่ใกล้จะเหมือนกันสำหรับทั้งขั้นตอนวิธี ความพยายามซ้ำสำหรับA1A1\mathcal{A}_1คือO(n),O(n),O(n),พูดในขณะที่A2A2\mathcal{A}_2คือO(n2).O(n2).O(n^2). มีสถานการณ์ที่หนึ่งจะชอบหนึ่งอัลกอริทึมมากกว่าอีก? ทำไม?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.