বিগ ও-র স্থির কারণগুলিকে অবহেলা করার জন্য ন্যায়সঙ্গততা


20

অনেক সময় যদি জটিলতায় 3n এর মতো ধ্রুবক থাকে তবে আমরা এই ধ্রুবকটিকে অবহেলা করি এবং ও (এন) এবং ও (3 এন) না বলে থাকি। আমি বুঝতে সক্ষম নই আমরা কীভাবে এ জাতীয় তিন ভাগে পরিবর্তন উপেক্ষা করতে পারি? কিছু কিছু অন্যান্য চেয়ে 3 গুণ বেশি দ্রুত পরিবর্তিত হয়! আমরা কেন এই সত্যটিকে অবহেলা করব?


"ক্যান" এর শব্দার্থবিজ্ঞান গুরুত্বপূর্ণ। অনুশীলনে, আমরা সাধারণত এ জাতীয় পরিবর্তনগুলিকে অবহেলা করতে পারি না , তবে তা (যেমন বাস্তব বিশ্বে অ্যালগরিদম পারফরম্যান্স বর্ণনা করে) ল্যান্ডাউ স্বরলিপিটি তৈরি করা হয় না। আরো সুনির্দিষ্ট formalisms না বিদ্যমান।
রাফেল

উত্তর:


22

অ্যাসিম্পটোটিক স্বীকৃতিগুলি ধ্রুবক কারণগুলিকে কীভাবে উপেক্ষা করে তা যুক্তিযুক্ত করার জন্য, আমি সাধারণত এটিকে এরকম মনে করি: অ্যাসিপটোটিক জটিলতা বিভিন্ন অ্যালগরিদমের পারফরম্যান্সের তুলনা করার জন্য নয়, ইনপুট আকারের ক্ষেত্রে স্বতন্ত্র অ্যালগরিদমের স্কেল কীভাবে আঁকবে তা বোঝার জন্য।

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

কোনটি অ্যালগরিদম স্কেল আরও ভাল, কোনটি একেবারে দ্রুত are


11

প্রথমত, অন্যান্য উত্তর ইতিমধ্যে ব্যাখ্যা, , অথবা কথায় এটা করা, একটি ফাংশন হে ( 3 এন ) যদি এবং কেবল এটা হলে হে ( )f = O ( 3O(3n)=O(n)O(3n)O(n) অর্থ হ'ল একটি বিন্দু N এবং একটি ফ্যাক্টর সি 3 বিদ্যমান রয়েছেযা সকল n N , f ( n ) C 33 এর জন্য রয়েছেf=O(3n)NC3nএন । এখন বাছাই সি 1 = 3 সি 3 : সবার জন্য এন এন ,( এন ) সি 1এন , তাই= হে ( ) । কথোপকথনের প্রমাণও একই রকম।(এন)সি33এনসি1=3সি3এনএন(এন)সি1এন=হে(এন)

এখন সঠিক কারণে এটি কারণ। লক্ষ্য করুন যে আমরা যখন একটি অ্যালগরিদমের জটিলতা পরিমাপ করি তখন আমরা একটি ইউনিট দেই না। আমরা সেকেন্ড, বা মেশিনের নির্দেশাবলী গণনা করি না: আমরা কয়েকটি অনির্দিষ্ট প্রাথমিক পদক্ষেপ গণনা করি যা প্রত্যেকে একটি সীমাবদ্ধ সময় নেয়। আমরা এটি করি কারণ একটি ভিন্ন মেশিনে একই অ্যালগরিদম কার্যকর করা প্রতিটি নির্দেশ অনুসারে প্রয়োজনীয় সময়কে বদলে দেয় - ঘড়ির ফ্রিকোয়েন্সি দ্বারা গুণিত করে এবং কার্যকর করার সময়টি f ( n ) থেকে f ( n ) / 3 এ যায়3(এন)(এন)/3। যদি আমরা একই অ্যালগোরিদমকে কোনও ভিন্ন ভাষায়, বা একটি ভিন্ন সিস্টেমে প্রয়োগ করি, তবে প্রতিটি প্রাথমিক পদক্ষেপ গ্রহণের সময়টি আলাদা হতে পারে, তবে আবার এটি অত্যধিক বিবরণ: আমরা এ জাতীয় পার্থক্য খুব কমই যত্ন করি।

আপনি যখন সুনির্দিষ্ট সময় সম্পর্কে যত্নশীল হন, অ্যাসিপটোটিক জটিলতা প্রাসঙ্গিক নয়: অ্যাসিপটোটিক জটিলতা আপনাকে জানায় যে খুব বড় ইনপুট আকারের জন্য কী ঘটে থাকে, যা আপনি যে প্রকৃত ইনপুট আকারের সাথে আচরণ করছেন তা নাও হতে পারে।


এছাড়াও মনে রাখবেন যে, তার মধ্যে Sedgewick "একটি আলগোরিদিম বিশ্লেষণ পরিচিতি" ব্যবহার সমর্থনকারীরা o(g)অধিকার পরিমাপ, অর্থাত যেমন আছে, রানটাইমগুলি বর্ণনা করার উপায় হিসাবে (যদি আপনি চান তবে প্রভাবশালী প্রাথমিক ক্রিয়াকলাপের ক্ষেত্রে তবে ওপিকে বিরক্ত করে থাকা ধ্রুবক ফ্যাক্টর সহ)। limng(n)T(n)=1
ভনব্র্যান্ড

2
@ ভনব্র্যান্ড কি সেজউইক সত্যিই তা বলে? স্বাভাবিক সংজ্ঞা যে লিম এন ( টি ( এন ) /( এনটি(এন)((এন) (অর্থাত, ভগ্নাংশ অন্যান্য উপায় কাছাকাছি এবং সীমা শূন্য, নয় unityলিমএন(টি(এন)/(এন))=0
ক্য

3

বিগ-ও এর সংজ্ঞাটি স্মরণ করুন:

যদি থাকে তবে সি > 0 এর মধ্যে রয়েছেযেসমস্ত এন এর জন্য f ( n ) c g ( n ) রয়েছেf(n)O(g(n))c>0f(n)cg(n)n

এই সংজ্ঞা অনুযায়ী, আমরা যে আছে যে ধ্রুবক জন্য । উদ্দেশ্য হে স্বরলিপি এই পদ্ধতিতে প্রক্রিয়া সহজ এক্সপ্রেশন ঠিক নয়। প্রকৃতপক্ষে, 3 এনdnO(n)হে3এন যত দ্রুত 3 বার বৃদ্ধি , কিন্তু তারা উভয় রৈখিক হয়। এটি ন্যায়সঙ্গত বা না - এটি প্রসঙ্গে নির্ভর করে। তবে যদি আপনি স্বরলিপি ব্যবহার করতে সম্মত হন তবে সংজ্ঞায়িত করে এটি ধারণ করে।এনহে


2
এটি বিগ-ও-এর একটি দুর্দান্ত ব্যাখ্যা সরবরাহ করে, তবে আমরা এই সংজ্ঞাটি কেন ব্যবহার করি সে সম্পর্কে কোনও ব্যাখ্যা নেই।
jmite

আমি যেমন লিখেছি - উদ্দেশ্যটি হল আমাদের জীবনকে সরল করা। এটি হোন কারণ আমরা কোনও পারমাণবিক অপারেশনের সঠিক মূল্য জানি না, বা কারণ আমরা অ্যাসিপোটোটিক স্বরলিপি সম্পর্কে যত্নশীল। আমি কেন একটি আকর্ষণীয় গাণিতিক প্রশ্ন খুঁজে পাই না, বরং একটি দার্শনিক প্রশ্ন। আমরা প্রযুক্তিগতভাবে এটি না করেই পারতাম। এটি কেবল জিনিসগুলিকে সত্যিই কুৎসিত এবং কাজ করা কঠিন করে তুলবে।
শাল

3

বিগ ও স্বরলিপিটি পারফরম্যান্সের বৈচিত্র্য পরিমাপের একটি ইউনিট মুক্ত মাধ্যম, সুতরাং এটি গণনামূলক আদিমের তুলনামূলক খরচের তুলনায় দুর্বল।

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

প্রথম মন্তব্যটি আপনার প্রশ্নটি খুব সঠিকভাবে বলা হয়নি। আপনি ধ্রুবক অবহেলা যখন মধ্যে3 , সেখানে প্রকৃতপক্ষে একটি "তিন ভাঁজ পরিবর্তন করুন", কিন্তু উভয় একই হারে পরিবর্তিত হতে, এবং আপনি করতে পারেন না দাবী করে যে, "[এক] জিনিস 3 বার নানারকম অন্য তুলনায় আরো দ্রুত"।3এন

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

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

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

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

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

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

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


2

অন্যান্য উত্তরগুলি কেন বিগ-ও, এর সংজ্ঞা অনুসারে দুর্দান্ত ব্যাখ্যা দেয় ।হে(এন)=হে(3এন)

কেন আমরা আসলে সিএসে এটি করি, এটি আমাদের কাছে একটি অ্যালগরিদমের দক্ষতার একটি সংক্ষিপ্ত বিবরণ রয়েছে। উদাহরণস্বরূপ, একটি অ্যালগরিদম থাকতে পারে যা একটি বিবৃতি থাকে, যেখানে একটি শাখা নির্দেশাবলী কার্যকর করে, এবং অন্যটি 3 এন নির্দেশনা কার্যকর করে। এর অর্থ হ'ল প্রতিটি ইনপুট, এমনকি একই দৈর্ঘ্যের ইনপুটগুলির জন্য সঠিক সংখ্যা পরিবর্তন হয়। আমরা প্রতিটি ইনপুট জন্য একটি সংখ্যা খুঁজে পেতে পারে, কিন্তু বিগ- O স্বরলিপি ব্যবহার করে আমাদের সমস্ত সময় ইনপুট রাখে এমন সময় জটিলতার একটি পরিমাপ দেয়।এন3এন

এটি অ্যালগরিদম কত দ্রুত হবে তা অনুমান করতে আরও বেশি কার্যকর। অন্যথায়, আমাদের একটি বৃহত টুকরা দিকের ফাংশনটি দেখতে হবে, যা বুঝতে খুব অসুবিধা হবে।

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


1

অর্থ লিম সুপার এন এফ ( এন )(এন)=হে((এন))লিম সাপএন(এন)(এন)<+ +

(এন)=এন(এন)=3এন

হে(এন2)=হে(.00005321এন2+ +1000000000এন+ +1046803)=


2
=হে()

@ জ্যাঁ হ্যাঁ, তবে আপনাকে লিখতে হবেহে()হে(এনএন2)'(এক্স)=(এক্স)এক্সএক্স=এন=
yo

(এন)

আমি সাধারণত এটিও করি, এটা জেনেও যে এটি স্বরলিপিটিরও অপব্যবহার;)
'

-1

আমি আপনাকে সহজভাবে ব্যাখ্যা করতে দিন। আসুন আমরা n = 100000 নিই Now এখন, 3n কী? এটি 300000 ( হ্যাঁ, এটি এন এর 3 ভাজ ) তবে এন ^ 2 কী? 10000000000 । ( এটি এন এর 1 লক্ষ ভাঁজ ) .. n এর সাথে n ^ 2 এর তুলনা করুন। 3 টি নগণ্য যখন আমরা 1 লক্ষের সাথে তুলনা করি। সুতরাং, আমরা এটি মুছে ফেলতে পারি।

ভাবুন এন যদি কয়েক বিলিয়ন বা ট্রিলিয়ন হয়। এই ক্ষেত্রে, আমরা আবার কয়েক বিলিয়ন বা ট্রিলিয়ন সঙ্গে 3 তুলনা করতে যাচ্ছি। এখন, আপনি কেন জানেন যে আমরা 3 অবহেলা করতে পারি।


2
তিন বছর এখনও এক বছরের চেয়ে দীর্ঘ সময়।
যুবাল ফিল্মাস

আমি দেখতে পাচ্ছি না কীভাবে এটি কোনও সহায়ক উপায়ে প্রশ্নের উত্তর দেয়। এটি অবশ্যই বিদ্যমান, বহু বছরের পুরানো উত্তরগুলিতে কিছু যোগ করে না।
রাফেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.