(মন্তব্যগুলির জন্য এটি অনেক দীর্ঘ হচ্ছে ...)
আমি ধরে নেব আপনার অ্যালগরিদমে আপনাকে আসলে একটি বিপরীতমুখী গণনা করতে হবে। 1 প্রথমত, এটি লক্ষণীয় গুরুত্বপূর্ণ যে এই বিকল্প অ্যালগরিদমগুলি আসলে দ্রুত বলে দাবি করা হয় না , কেবল তাদের মধ্যে আরও ভাল অ্যাসিম্পোটিক জটিলতা রয়েছে (অর্থাত প্রাথমিক ক্রিয়াকলাপগুলির প্রয়োজনীয় সংখ্যা আরও ধীরে ধীরে বৃদ্ধি পায়)। প্রকৃতপক্ষে, বাস্তবে এগুলি নিম্নোক্ত কারণে স্ট্যান্ডার্ড পদ্ধতির (প্রদত্ত এন ) তুলনায় আসলে (অনেক) ধীরে ধীরে :এন
-notation চামড়া শক্তি সামনে একটি ধ্রুবক এন , যা astronomically বৃহৎ হতে পারে - তাই বড় যে সি 1 এন 3 তুলনায় অনেক ছোট হতে পারে সি 2 এন 2. এক্স কোন এন যে কোনো কম্পিউটার দ্বারা পরিচালিত করা যেতে পারে সুদূর ভবিষ্যতে (উদাহরণস্বরূপ, কপারস্মিথ-উইনোগ্রাড অ্যালগরিদমের ক্ষেত্রে এটি রয়েছে))হেএনসি1এন3সি2এন2. এক্সএন
জটিলতা ধরে নিয়েছে যে প্রতিটি (গাণিতিক) ক্রিয়াকলাপ একই সময় নেয় - তবে এটি প্রকৃত অনুশীলনে সত্য নয়: একই সংখ্যার সাথে একগুচ্ছ সংখ্যাকে বিভিন্ন সংখ্যার একই পরিমাণকে গুণিত করার চেয়ে অনেক দ্রুত । এটি বর্তমান কম্পিউটারে বড় বোতল-ঘাটি ক্যাশে ডেটা পাচ্ছে এই তথ্যের কারণে প্রকৃত গাণিতিক ক্রিয়াকলাপ নয় to সুতরাং এমন একটি অ্যালগরিদম যা প্রথম পরিস্থিতি হিসাবে পুনরায় সাজানো যেতে পারে (যাকে বলা হয় ক্যাশে-সচেতন ) যেখানে এটি সম্ভব নয় তার চেয়ে অনেক দ্রুত হবে। (উদাহরণস্বরূপ, স্ট্র্যাসেন অ্যালগরিদমের ক্ষেত্রে এটি রয়েছে))
এছাড়াও, সংখ্যাগত স্থায়িত্ব কমপক্ষে পারফরম্যান্সের মতো গুরুত্বপূর্ণ; এবং এখানে, আবার, স্ট্যান্ডার্ড পদ্ধতির সাধারণত জয় হয়।
ও ( এন)3)ও ( এন)2. এক্স)
1 তবে আমি বিভ্রান্ত হব যদি আমি উল্লেখ করি না যে এটি খুব কমই সত্যিই প্রয়োজনীয়: যে কোনও সময় আপনার পণ্য
গণনা করা দরকার , আপনি পরিবর্তে লিনিয়ার সিস্টেম
A x = b সমাধান করবেন (উদাহরণস্বরূপ, ব্যবহার ) এবং পরিবর্তে
এক্স ব্যবহার করুন - এটি অনেক বেশি স্থিতিশীল এবং এটি
আরও দ্রুত করা যায় (ম্যাট্রিক্স
এ এর কাঠামোর উপর নির্ভর করে ) faster আপনার যদি
A - 1 টি একাধিকবার ব্যবহার করতে হয় তবে আপনি
এ এর
একটি কারণ (যা সাধারণত সমাধানের সবচেয়ে ব্যয়বহুল অংশ) প্রতিরোধ করতে পারেন এবং এটি পরে পুনরায় ব্যবহার করতে পারেন।
একজন- 1খএ x = খnumpy.linalg.solve
এক্সএকজনএকজন- 1একজন