না, আপনার কোডের সময় জটিলতা রয়েছে O(2^|<DeltaTime>|)
,
বর্তমান সময়ের সঠিক কোডিংয়ের জন্য।
দয়া করে আমাকে প্রথমে আমার ইংরাজির জন্য ক্ষমা চাইতে দিন।
CS এ বিগ ও কী কী এবং কীভাবে কাজ করে
প্রোগ্রামের চলমান সময়ের সাথে ইনপুট বেঁধে রাখতে বড় ও স্বরলিপি ব্যবহার করা হয় না ।
বিগ ও স্বরলিপিটি হ'ল কঠোরতার পিছনে রেখে দু'টি পরিমাণের অ্যাসিম্পটোটিক অনুপাত প্রকাশ করার উপায় ।
অ্যালগরিদম বিশ্লেষণ যদি এই দুটি পরিমাণে হয় না ইনপুট (যার জন্য প্রথমে একটি "পরিমাপ" ফাংশন থাকতে হবে) এবং চলমান সময়।
এগুলি সমস্যা 1 এর কোডিংয়ের দৈর্ঘ্য এবং আগ্রহের মেট্রিক।
সাধারণত ব্যবহৃত মেট্রিকগুলি হয়
- গণনার একটি প্রদত্ত মডেলটিতে অ্যালগরিদম সম্পূর্ণ করতে প্রয়োজনীয় পদক্ষেপের সংখ্যা।
- গণনার মডেল দ্বারা এমন কোনও ধারণা উপস্থিত থাকলে স্থান প্রয়োজন।
স্পষ্টতই একটি টিএমকে মডেল হিসাবে ধরে নেওয়া হয় যাতে প্রথম পয়েন্টটি ট্রানজিশন 2 ফাংশনের অ্যাপ্লিকেশনের সংখ্যায় অর্থাত্ "পদক্ষেপ" অনুবাদ করে এবং দ্বিতীয়টি কমপক্ষে একবার লেখা বিভিন্ন টেপ কোষের সংখ্যা অনুবাদ করে ।
এটি কি প্রায়শই স্পষ্টতই ধরে নেওয়া যায় যে আমরা মূলটির পরিবর্তে বহুভিত্তিক সম্পর্কিত এনকোডিংটি ব্যবহার করতে পারি, উদাহরণস্বরূপ এমন ক্রিয় যা শুরু থেকে শেষ অবধি অনুসন্ধান করে তার মধ্যে O(n)
জটিলতা থাকে যদিও এই ধরণের অ্যারের উদাহরণের কোডিংয়ের দৈর্ঘ্য হওয়া উচিত despite n*b+(n-1)
যেখানে b
প্রতিটি উপাদানটির প্রতীক সংখ্যা (ধ্রুবক) থাকে। এটি কারণ b
হিসাবে গণনা মডেলের একটি ধ্রুবক হিসাবে বিবেচিত হয় এবং তাই উপরের অভিব্যক্তি এবং n
asyptotically একই হয়।
এই ব্যাখ্যা দিয়েছে কেন মত একটি অ্যালগরিদম ট্রায়াল বিভাগ একটি হল সূচকীয় মূলত একটি সত্ত্বেও অ্যালগরিদম for(i=2; i<=sqr(N); i++)
অ্যালগরিদম মত 3 ।
এই দেখুন ।
এর অর্থ হ'ল বড় হে নোটেশন সমস্যাটি বর্ণনা করতে যতগুলি প্যারামিটার ব্যবহার করতে পারে তা ব্যবহার করতে পারে, কিছু অ্যালগরিদমের জন্য কে প্যারামিটার থাকা অস্বাভাবিক নয় ।
তাই এই নয় "ইনপুট" বা সম্পর্কে যে "কোন ইনপুট হয়"।
স্টাডি কেস এখন
বড় ও স্বরলিপি আপনার অ্যালগরিদমকে প্রশ্নবিদ্ধ করে না, এটি কেবল ধরে নেয় যে আপনি কী করছেন তা আপনি জানেন। এটি মূলত এমন একটি সরঞ্জাম যা সর্বত্র প্রযোজ্য এমনকি অ্যালগরিদম পর্যন্ত যা ইচ্ছাকৃতভাবে কৃপণ হতে পারে (আপনার মতো)।
আপনার সমস্যা সমাধানের জন্য আপনি বর্তমান তারিখ এবং ভবিষ্যতের তারিখটি ব্যবহার করেছেন, সুতরাং এগুলি অবশ্যই কোনওরকম সমস্যার অংশ হতে হবে; সহজ কথায় বলতে গেলে: তারা সমস্যাটির অংশ।
বিশেষত উদাহরণটি হ'ল:
<DeltaTime>
যেখানে <>
অর্থ কোনও, অ প্যাথলজিকাল, পছন্দের কোডিং।
খুব গুরুত্বপূর্ণ স্পষ্টতা জন্য নীচে দেখুন ।
সুতরাং আপনার বড় হে জটিলতার সময়টি কেবলমাত্র O(2^|<DeltaTime>|)
, কারণ আপনি প্রচুর পুনরাবৃত্তি করেন যা বর্তমান সময়ের মানের উপর নির্ভর করে। অন্যান্য সংখ্যার ধ্রুবকগুলি রাখার কোনও অর্থ নেই কারণ অ্যাসিম্পটোটিক স্বরলিপিটি দরকারী কারণ এটি ধ্রুবকগুলি দূর করে (উদাহরণস্বরূপ এর ব্যবহার O(10^|<DeltaTime>|*any_time_unit)
অর্থহীন)।
ট্র্যাফিক অংশটি যেখানে
আমরা উপরে একটি গুরুত্বপূর্ণ অনুমান করেছি: গণনার মডেলটি 5 বার পুনরুদ্ধার করে এবং সময়কালে আমি শারীরিক সময়টির (আসল?) মানে। স্ট্যান্ডার্ড কম্পিউটেশনাল মডেলটিতে এমন কোনও ধারণা নেই, একটি টিএম সময় জানে না, আমরা সময়কে সংখ্যার সাথে সংযুক্ত করি কারণ আমাদের বাস্তবতা এভাবেই কাজ করে 4 ।
আপনার মডেলটিতে যদিও সময়টি গণনার অংশ, আপনি কার্যনির্বাহী লোকের পরিভাষাটি এই কথাটি ব্যবহার করে ব্যবহার করতে পারেন যে মেইন শুদ্ধ নয় তবে ধারণাটি একই is
এটিকে বোঝার জন্য লক্ষ্য করা উচিত যে ফ্রেমওয়ার্ককে কোনও জাল সময় ব্যবহার করতে বাধা দেয় না যা শারীরিক সময়ের চেয়ে দু'বার, পাঁচ, দশগুণ দ্রুত চলে। এইভাবে আপনার কোডটি "সময়ের" "অর্ধেক", "এক পঞ্চম", "দশমী" তে চলবে।
এই এনকোডিংটি বেছে নেওয়ার জন্য এই প্রতিবিম্বটি গুরুত্বপূর্ণ <DeltaTime>
, এটি মূলত <(কারেন্টটাইম, টাইমইনফিউচার)> রচনার একটি ঘনীভূত উপায়। যেহেতু সময়টি প্রাথমিকভাবে নেই, তাই কারেন্টটাইমের কোডিং খুব ভালভাবে এখন শব্দ (বা অন্য কোনও পছন্দ) শব্দটি হতে পারে আগের দিনই গতকাল হিসাবে কোড করা যেতে পারে , সেখানে এই ধারণাটি ভেঙে যে শারীরিক সময় হিসাবে কোডিংয়ের দৈর্ঘ্য বৃদ্ধি পায় এগিয়ে যায় (এবং ডেল্টটাইমের একটি হ্রাস পায়)
দরকারী কিছু করার জন্য আমাদের কম্পিউটারের মডেলটিতে সময়কে সঠিকভাবে মডেল করতে হবে।
কেবলমাত্র নিরাপদ পছন্দটিই আমরা পারি শারীরিক সময় ধাপে ধাপে ধাপে বাড়ানোর দৈর্ঘ্যের (তবে এখনও অ্যানারি ব্যবহার না করে) টাইমস্ট্যাম্পগুলি এনকোড করা। এটি আমাদের প্রয়োজন সময়ের একমাত্র সত্য সম্পত্তি এবং এনকোডিংটি ধরার দরকার। কেবলমাত্র এই ধরণের এনকোডিং দিয়েই আপনার অ্যালগরিদম সম্ভবত একটি সময় জটিলতা দেয়।
আপনার বিভ্রান্তি, যদি থাকে তবে এই শব্দটি থেকে উদ্ভূত হয় যে শব্দটির সময়টি 'এর সময়ের জটিলতা কী?' এবং 'কত সময় লাগবে?' খুব ভিন্ন জিনিস বোঝাতে
হায়রে পরিভাষা একই শব্দ ব্যবহার করে তবে আপনি নিজের পদক্ষেপে "স্টেপস জটিলতা" ব্যবহার করে চেষ্টা করতে পারেন এবং নিজেকে আপনার প্রশ্নটি পুনরায় জিজ্ঞাসা করতে পারেন, আমি আশা করি যে উত্তরটি আপনাকে সত্যই বুঝতে সাহায্য করবে ^ _ ^
1 এটি একটি অ্যাসিম্পটোটিক পদ্ধতির প্রয়োজনীয়তাও ব্যাখ্যা করে কারণ প্রতিটি উদাহরণের ভিন্নতা রয়েছে, তবে নির্বিচারে নয়, দৈর্ঘ্য।
2 আমি আশা করি আমি এখানে সঠিক ইংরেজি শব্দটি ব্যবহার করছি।
3 এছাড়াও আমরা প্রায়শই log(log(n))
গণিতে শব্দগুলি খুঁজে পাই ।
4 আইড ইস্ট, একটি পদক্ষেপ অবশ্যই কিছু সীমাবদ্ধ থাকতে পারে, তবে নাল নয়, সংযুক্ত নয়, সময়ের ব্যবধান।
5 এর অর্থ হ'ল এর মধ্যে শারীরিক সময়ের জ্ঞান হিসাবে গণনা মোড, এটি তার শর্তাদি দিয়ে এটি প্রকাশ করতে পারে। .NET ফ্রেমওয়ার্কে জেনারিকগুলি কীভাবে কাজ করে তা একটি উপমা।
O(N)
জটিলতা নয়O(1)