অ্যালগরিদম সময় বিশ্লেষণ "ইনপুট আকার" বনাম "ইনপুট উপাদানগুলি"


13

অ্যালগরিদমের জন্য অ্যাসিম্পটেম্যাটিক উপরের সীমানা বিশ্লেষণ ও বর্ণনা করতে ব্যবহৃত হলে আমি "ইনপুট দৈর্ঘ্য" এবং "ইনপুট আকার" পদগুলি নিয়ে এখনও কিছুটা বিভ্রান্ত হয়ে পড়েছি

দেখে মনে হচ্ছে অ্যালগরিদমের জন্য ইনপুট দৈর্ঘ্য অনেক ধরণের ডেটা এবং আলগোরিদম আপনি নির্ভর করছেন।

কিছু লেখক ইনপুট দৈর্ঘ্যের উল্লেখ করে অক্ষরের আকারকে যা ইনপুট উপস্থাপন করতে হয়, সুতরাং "অ্যাবসিডি" যদি কোনও অ্যালগরিদমে ইনপুট সেট হিসাবে ব্যবহার করা হয় তবে "অক্ষরের দৈর্ঘ্য" 6 টি হবে।

অক্ষরের পরিবর্তে যদি আমাদের সংখ্যা থাকে (উদাহরণস্বরূপ পূর্ণসংখ্যা) তবে মাঝে মাঝে অক্ষরগুলির পরিবর্তে বাইনারি উপস্থাপনা ব্যবহার করা হয় তাই "ইনপুট দৈর্ঘ্য" হিসাবে গণনা করা হয় ( ইনপুট সেটে সর্বাধিক সংখ্যা হওয়ায়) ।Nlog(L)

অন্যান্য সমস্যা রয়েছে যে ইনপুট সেট সংখ্যা হলেও, তারা "সিদ্ধান্তের ভেরিয়েবল" হিসাবে "ইনপুট দৈর্ঘ্য" বর্ণনা করে, তাই পরিসরের সংখ্যার সাথে দৈর্ঘ্যের এন একটি ইনপুট সেটের জন্য ইনপুট দৈর্ঘ্যটি কেবলমাত্র N ( উদাহরণস্বরূপ সাবসেট যোগফল), বা আরও বেশি সমস্যা জটিলতার সাথে বাইনারি স্থানের মানগুলির সংখ্যা জটিল করে তোলে (যা আমি বিশ্বাস করি কেবল N L o g ( L ) এর সমান )0232Nlog(L)

তাই:

  • এটি আলগোরিদিম উপর নির্ভর করে?
  • প্রতিটি ইনপুট দৈর্ঘ্যের "সংস্করণ" কী এবং কখন ব্যবহার করবেন
  • কোনটি ব্যবহার করার সিদ্ধান্ত নেওয়ার জন্য আমি কিছু নিয়ম ব্যবহার করতে পারি?

উত্তর:


10

অত্যন্ত আনুষ্ঠানিক অর্থে, ইনপুটটির আকারটি অ্যালগরিদমের একটি টুরিং মেশিন বাস্তবায়নের প্রসঙ্গে পরিমাপ করা হয় এবং এটি ইনপুটকে এনকোড করার জন্য প্রয়োজনীয় বর্ণমালার প্রতীক সংখ্যা।

এটি অবশ্যই বিমূর্ততা, এবং অনুশীলনের সাথে কাজ করা খুব কঠিন, বা কমপক্ষে খুব বিরক্তিকর - আমাদের কীভাবে ডিলিমেটারগুলি নির্দিষ্ট করা যায় তা বিবেচনা করা দরকার etc. ইত্যাদি। অনুশীলনে সাধারণত কী ঘটে থাকে তা হ'ল আমাদের সন্ধান একটি প্রক্সি ইনপুটের আকার পরিমাপের - কিছু আরও বেশি সুবিধাজনক এবং অ্যাক্সেসযোগ্য, কিন্তু যে আমাদের বিশ্লেষণে কোনো গাণিতিক সমস্যার সৃষ্টি করে না।

আপনার "অ্যাবিসিডি" উদাহরণটি ব্যবহার করে, সাধারণত এটি হবে যে আমরা যে বর্ণমালা ইনপুটটির জন্য ব্যবহার করি তা ছোট হয়, তাই এমনকি অক্ষরের প্রক্সি পরিমাপ ব্যবহার করে আমরা জানি যে এমনকি কোনও ট্যুরিং মেশিনেও আমরা বিরক্ত করলে, একটি ইনপুট এনকোডিং যে কিছু এনকোডেড ফর্ম যে সর্বাধিক দৈর্ঘ্য ছিল "abcde" রূপান্তর করুন করবে উল্লেখ 5 × কিছু ধ্রুবক । ধ্রুবক দ্বারা এই প্রসারণটি সাধারণত আমাদের অ্যাসিপোটোটিক বিশ্লেষণে কোনও তাত্পর্য সৃষ্টি করতে পারে না, কারণ আমরা নিয়মিতভাবে ধ্রুবক উপাদানগুলি ত্যাগ করি।55×c c

একটি ভিন্ন ক্ষেত্রে, আমরা প্রায়ই ছেদচিহ্ন সংখ্যা দ্বারা একটি ইনপুট গ্রাফ আকার পরিমাপ । স্পষ্টতই যদি আমরা নির্বিচারে বড় গ্রাফগুলি নির্দিষ্ট করতে চাই, এনকোডযুক্ত ইনপুটটির আকারটি কেবল এন নয় - উদাহরণস্বরূপ প্রান্তগুলির কী হয়েছিল? আমরা যা জানি তা হ'ল আমরা যুক্তিসঙ্গত এনকোডিং স্কিমটি ব্যবহার করতে পারি যা N = c n 2 লগ এন বিটগুলিতে গ্রাফটি উপস্থাপন করে । ধ্রুবকের তুলনায় এটি কিছুটা প্রসারণ, তবে প্রচুর আকর্ষণীয় ক্ষেত্রে আমরা কেবল বহুবর্ষের কিছু বিষয় নিয়ে কাজ করছি, এবং বহুবচনগুলি অনেক উপায়ে সুন্দরভাবে রচনা করেছে - বিশেষত, উদাহরণস্বরূপ, যদি আমরা নির্ধারণ করি যে আমাদের চলমান সময় O ( পি (nnN=cn2logn যেখানে p একটি বহুপদী, তখন আমরা জানতে পারি যে কিছু বহুপদী p যেমন O ( p ( n ) ) = O ( p ( N ) ) রয়েছে , তাই যখন আমরা ইনপুটটির আনুষ্ঠানিক পরিমাপে ফিরে যাই , আমরা এখনও বহুবর্ষে আছি।O(p(n))ppO(p(n))=O(p(N))

mn=O(logm)O(m)O(2n)mPNPNP-সমম্পূর্ণ, এটি মনে রাখবেন)। অন্যদিকে, আমরা যদি আগ্রহী সবাই হ'ল ক্ষয়ক্ষতি হ'ল, তবে এটি যথেষ্ট পরিমাণে প্রক্সি ব্যবস্থা হবে।

সুতরাং ইনপুট আকারের জন্য প্রক্সি পরিমাপ বাছাইয়ের কোনও বিবৃত নিয়ম নেই, তবে প্রয়োজনীয়তাটি হ'ল ইনপুট আকারের তুলনায় প্রক্সি আকারের প্রসারণ বা সংকোচনের সাথে আপনি যা প্রমাণ করার চেষ্টা করছেন তার সাথে সামঞ্জস্য হওয়া উচিত। থাম্বের নিয়ম হিসাবে, ধ্রুবক ফ্যাক্টরগুলি প্রায় কোনও ক্ষেত্রেই পরিবর্তিত হয় না, ছোট বহু বহুবিক কারণগুলি সাধারণত সূক্ষ্ম হয় এবং আপনি দেখেন যে বেশিরভাগ বুনিয়াদি তত্ত্বটি দেখেছেন, বৃহত্তর বহুবচনীয় উপাদানগুলি এখনও তত্ত্বের ক্ষেত্রে কাজ করতে পারে, তবে বাস্তবে এটি একটি বাজে আশ্চর্য হতে পারে, এবং পরিবর্তনীয় পরিমাণে পরিবর্তন সাধারণত খুব চরম হয়।


উত্তরের জন্য ধন্যবাদ. ইনপুটটির জন্য পি বা এনপিতে সদস্যতার বিষয়ে কথা বলার জন্য সঠিক প্রক্সি নির্বাচনের বিষয়ে আপনি যে অংশটি কথা বলছেন তা সত্যই আকর্ষণীয়, এটি একটি সম্পূর্ণ নতুন প্রশ্ন হতে পারে! তদ্ব্যতীত, এবং সাবেক প্রশ্নে ফিরে আসছি। আপনার মতে কোনটি তখন কোনও অ্যালগরিদমের পক্ষে সেরা প্রক্সি হবে যে এর ইনপুটটি পূর্ণসংখ্যার একটি সেট? আমার ধারণা সম্ভবত এটি অ্যালগরিদমের উপর নির্ভর করবে? আমি 3 টি সম্ভাব্য বিকল্প দেখতে পাচ্ছি: এন (সেটটির দৈর্ঘ্য হওয়া) এন * লগ (এল) (এল সর্বাধিক মান হওয়া) এবং লগ (যোগফল (সেট))।
যীশু সালাস

NlogLNN 2logL

5ccn2lognnn2

সম্ভবত যখন এন বা এন লগ এল ব্যবহার করবেন তখন প্রতিটি ইনপুট উপাদানগুলিতে কাজ করতে অ্যালগরিদমের ব্যয়ের উপর নির্ভর করতে পারে। আমি অনুমান করি যে আমাদের যদি ধারণা হয় যে অ্যালগরিদম প্রতিটি ইনপুট উপাদানগুলিতে বিট আকারে স্বতন্ত্রভাবে তার ইনপুট উপাদানগুলিতে কাজ করার জন্য ধ্রুবক সময় ব্যবহার করে (এবং এটি অপব্যবহার করা হয় না), তবে সম্ভবত এন সঠিকভাবে, যার ফলে ও (এন) হবে । অন্যদিকে যদি বিটগুলিতে ইনপুট উপাদানটির আকার অপারেশন ব্যয় বাড়ায় তবে এন লগ এল আরও সঠিক বলে মনে হচ্ছে যেহেতু আমাদের উপরের সীমানায় প্রকাশ করা উচিত ইনপুট থেকে কী কী বৈশিষ্ট্যগুলি বৃদ্ধিতে জড়িত
যিশু সালাস s ই

5c=1c=log255 O(n2logn)বিটস, তবে এটি বেশ শক্তিশালী উপরের বাউন্ড যা উভয় সাধারণ এনকোডিংয়ের সাথে ডিল করতে পারে।
লুক ম্যাথিসন

8

এটি আপনার গণনার মডেল এবং দুর্ভাগ্যবশত কখনও কখনও নিজেই অ্যালগরিদমের উপরও নির্ভর করে।

  • ababcd
  • যদি আপনার মডেলটি র‌্যাম হয় তবে ইনপুটটির আকার হ'ল নিবন্ধ / মেমরি কোষগুলির সংখ্যা যেখানে ইনপুট প্রাথমিকভাবে থাকে s আপনি কোনও রেজিস্টারে প্রযুক্তিগতভাবে পুরো ইনপুটটি লিখতে পারেন বলে এটির অপব্যবহার হতে পারে। তবে আপনি যদি লগারিদমিক ব্যয়গুলির মডেল ব্যবহার করেন তবে গণনাগুলি আরও ব্যয়বহুল।
  • ww

তবে অনেকগুলি অ্যালগরিদম "প্রকৃত" ইনপুট আকারের সাথে মাপানো হয় না। তারপরে আপনাকে সাবধানতার সাথে দেখতে হবে, বিশ্লেষণের বিবৃতিটি কী বোঝায়।

  • O(nlogn)nO(1)n
  • n×n

n


1
nO(n3)nn
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.