লোভী অ্যালগরিদম কীভাবে প্রমাণ করবেন তা সঠিক


29

আমার কাছে একটি লোভী অ্যালগরিদম রয়েছে যা আমার সন্দেহ হতে পারে যে এটি সঠিক হতে পারে তবে আমি নিশ্চিত নই। এটি সঠিক কিনা তা আমি কীভাবে পরীক্ষা করব? লোভী অ্যালগরিদমকে সঠিক প্রমাণ করার জন্য কী কী কৌশলগুলি ব্যবহার করবেন? সাধারণ প্যাটার্ন বা কৌশল আছে?

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



আমরা ম্যাট্রয়েড বা লোভযুক্ত ব্যবহার করে লোভী অ্যালগরিদমকে সঠিক প্রমাণ করতে পারি?
zdm

উত্তর:


24

শেষ পর্যন্ত, আপনার সঠিকতার গাণিতিক প্রমাণের প্রয়োজন হবে। আমি নীচে এটির জন্য কিছু প্রমাণ কৌশলগুলি পেয়ে যাব, তবে প্রথমে, এতে ডুব দেওয়ার আগে আমাকে কিছুটা সময় বাঁচাতে দাও: আপনি কোনও প্রমাণ অনুসন্ধান করার আগে, এলোমেলো পরীক্ষার চেষ্টা করুন।

এলোমেলো পরীক্ষা

প্রথম পদক্ষেপ হিসাবে, আমি আপনাকে আপনার অ্যালগরিদম পরীক্ষা করতে এলোমেলো পরীক্ষা ব্যবহার করার পরামর্শ দিই। এটি আশ্চর্যজনক যে এটি কতটা কার্যকর: আমার অভিজ্ঞতায় লোভী অ্যালগরিদমের জন্য, এলোমেলো পরীক্ষাটি অযৌক্তিকভাবে কার্যকর বলে মনে হচ্ছে। আপনার অ্যালগরিদমটি কোডিংয়ের জন্য 5 মিনিট সময় ব্যয় করুন এবং আপনি প্রমাণটি উপস্থিত হওয়ার চেষ্টা করে নিজেকে এক ঘন্টা বা দুই ঘন্টা বাঁচাতে পারেন।

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

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

সঠিকতার গাণিতিক প্রমাণ

ঠিক আছে, সুতরাং আমাদের লোভী অ্যালগরিদমটি সঠিক প্রমাণ করতে হবে: এটি সর্বোত্তম সমাধানকে ছাড়িয়ে যায় (বা, যদি একাধিক অনুকূল সমাধান রয়েছে যা সমানভাবে ভাল হয়, তবে এটির মধ্যে একটির ফলস্বরূপ)।

মূল নীতিটি একটি স্বজ্ঞাত:

মূলনীতি: আপনি যদি কখনও খারাপ পছন্দ না করেন, আপনি ঠিক করবেন।

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

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

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

আমরা ব্যবহার করি একটি খুব সাধারণ প্রমাণ প্যাটার্ন আছে। অ্যালগরিদমের নিম্নলিখিত সম্পত্তিটি প্রমাণ করার জন্য আমরা কঠোর পরিশ্রম করব:

দাবি: আসুন আলগোরিদিম দ্বারা সমাধান আউটপুট হতে হবে এবং হে সর্বোত্তম সমাধান হতে। যদি এস থেকে ভিন্ন হে , তাহলে আমরা বদলাতে পারেন হে আরেকটি সমাধান পেতে হে * যে থেকে ভিন্ন হে এবং কঠোরভাবে বেশী ভালো হেSOSOOOOO

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

ফাইন। তাহলে আমরা কীভাবে দাবিটি প্রমাণ করব? আমরা একটি সমাধান ভেক্টর হিসাবে বিবেচনা করি ( এস 1 , , এস এন ) যা অ্যালগরিদমের দ্বারা তৈরি এন পছন্দগুলির ক্রমটির সাথে মিলে যায় এবং তেমনিভাবে, আমরা সর্বোত্তম সমাধান ওকে ভেক্টর হিসাবে মনে করি ( 1 , , হে এন ) পছন্দের ক্রম যে হতে হবে সংশ্লিষ্ট হে । যদি এস থেকে ভিন্ন হে , কিছু সূচক থাকা আবশ্যক আমি যেখানে S আমিS(S1,,Sn)nO(O1,,On)OSOi ; আমরা সবচেয়ে ছোট i তে মনোনিবেশ করব। এর পরে, আমরা খামচি করব হে পরিবর্তন করে হে একটি সামান্য বিট আমি তম অবস্থানে ম্যাচে S আমি , অর্থাত্, আমরা সন্তোষজনক সমাধান খামচি করব হে পরিবর্তন করে আমি লোভী অ্যালগোরিদম দ্বারা নির্বাচিত এক ম পছন্দ করুন, এবং তারপর আমরা এটি দেখাব যে এটি আরও উন্নততর সমাধানের দিকে নিয়ে যায়। বিশেষ করে, আমরা সংজ্ঞায়িত করব হে * ভালো কিছু হবেSiOiiOOiSiOiO

O=(O1,O2,,Oi1,Si,Oi+1,Oi+2,,On),

তা ছাড়া প্রায়শই আমাদের বৈশ্বিক ধারাবাহিকতা বজায় রাখতে অংশটি সামান্য পরিবর্তন করতে হবে। প্রমাণ কৌশলের অংশ সংজ্ঞায়িত মধ্যে কিছু চালাকি জড়িত হে * উপযুক্তভাবে। তারপর, প্রমাণ মাংস একরকম অ্যালগরিদম এবং সমস্যা সম্পর্কে তথ্য ব্যবহার করে দেখাতে হবে হে * কঠোরভাবে বেশী ভালো হেOi+1,Oi+2,,OnOOO; সেখানেই আপনার কিছু সমস্যা-নির্দিষ্ট অন্তর্দৃষ্টি দরকার। এক পর্যায়ে, আপনাকে আপনার নির্দিষ্ট সমস্যার বিবরণে ডুব দিতে হবে। তবে এটি আপনাকে লোভী অ্যালগরিদমের জন্য নির্ভুলতার একটি সাধারণ প্রমাণের কাঠামোর একটি ধারণা দেয়।

একটি সাধারণ উদাহরণ: সর্বাধিক যোগফল সহ

বিস্তারিত কোনও সাধারণ উদাহরণ দিয়ে কাজ করে এটি বোঝা আরও সহজ হতে পারে। আসুন নিম্নলিখিত সমস্যাটি বিবেচনা করুন:

ইনপুট: একটি সেট , পূর্ণসংখ্যার একটি পূর্ণসংখ্যা আউটপুট: একটি সেট এস ইউ আকারের যার সমষ্টি যতটা সম্ভব বড়Uk
SUk

এই সমস্যার জন্য একটি প্রাকৃতিক লোভী অ্যালগরিদম রয়েছে:

  1. সেট করুন : = S:=
  2. জন্য : i:=1,2,,k
    • যাক সর্ববৃহৎ সংখ্যা হতে ইউ এখনো বাছাই করা হয় নি যে (অর্থাত, আমি ম বৃহত্তম সংখ্যা ইউ )। যোগ x আমি করতে এসxiUiUxiS

এলোমেলো পরীক্ষার পরামর্শ দেয় এগুলি সর্বদা অনুকূল সমাধান দেয়, সুতরাং আসুন আমরা আনুষ্ঠানিকভাবে প্রমাণ করতে পারি যে এই অ্যালগরিদমটি সঠিক। নোট করুন যে সর্বোত্তম সমাধানটি অনন্য, সুতরাং আমাদের বন্ধনের বিষয়ে চিন্তা করতে হবে না। উপরে বর্ণিত দাবিটি প্রমাণ করা যাক:

দাবি: আসুন ইনপুটের এই অ্যালগরিদম দ্বারা সমাধান আউটপুট হতে ইউ , , এবং হে অনুকূল সমাধান। যদি এস হে , তাহলে আমরা অন্য সমাধান গঠন করা যেতে পারে হে * যার সমষ্টি চেয়ে আরও বড় হেSU,kOSOOO

প্রুফ। ধরে , এবং দিন আমি প্রথম সূচক হতে পুনরাবৃত্তির যেখানে এক্স আমিহে । (এ ধরনের সূচক আমি , থাকা আবশ্যক আমরা অধিকৃত থাকেন যেহেতু এস হে এবং আলগোরিদিম সংজ্ঞা দ্বারা আমরা আছে এস = { x এর 1 , ... , x এর } ।) (ধৃষ্টতা দ্বারা) যেহেতু আমি সংক্ষিপ্ত, আমরা থাকতে হবে x 1 , , x আমি - 1 , এবং বিশেষত,SOixiOiSOS={x1,,xk}ix1,,xi1O এর ফর্ম O = { x 1 , x 2 , , x i - 1 , x i , x i + 1 , , x n } রয়েছে , যেখানে x 1 , , x i - 1 , x i , , x nOO={x1,x2,,xi1,xi,xi+1,,xn}x1,,xi1,xi,,xnঅবতরণ ক্রমে তালিকাভুক্ত করা হয়। অ্যালগরিদম কীভাবে তা দেখে আমরা দেখতে পাচ্ছি যে সমস্ত জে i এর জন্য আমাদের অবশ্যই x i > x j থাকতে হবে । বিশেষত, x i > x i । সুতরাং, সংজ্ঞায়িত হে = হে { এক্স আমি } { এক্স ' আমি } , অর্থাত, আমরা প্রাপ্ত হে * মুছে ফেলার মাধ্যমে আমি ম সংখ্যা হেx1,,xixi>xjjixi>xiO=O{xi}{xi}OiOএবং যোগ করা i । এখন উপাদানের সমষ্টি হে * উপাদান এর সমষ্টি হে প্লাস x আমি - এক্স ' আমি আর x আমি - এক্স ' আমি > 0 , তাই হে * এর সমষ্টি থেকে যথাযথভাবে বড় হে গুলি সমষ্টি। এটি দাবি প্রমাণ করে। xiOOxixixixi>0OO

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

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


এটি একটি পুরানো প্রশ্ন, তবে এটি আমার জন্য গুগলে প্রথম ফলাফল। লাইন then we can tweak O to get another solution O∗ that is different from O and strictly better than Oআমাকে বিভ্রান্ত করে। যদি একাধিক অনুকূল সমাধান হয় তবে এটি থাকা সম্ভব S != Oএবং উভয়ই এখনও অনুকূল হতে পারে; আমরা ওকে "আরও বেশি" এস ( ও strictly better than
creating

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

1
দ্রুত সাড়া দেওয়ার জন্য ধন্যবাদ! আমি সেই বিন্দুটি মিস করেছি যেখানে আপনি যদি কেবলমাত্র অ্যালগরিদম প্রমাণ করার দিকে মনোনিবেশ করেন a single, unique optimal solution। যেহেতু এই প্রশ্নটি কোনও লোভী অ্যালগরিদমকে সঠিক প্রমাণ করার বিষয়ে , তাই আমি একাধিক অনুকূল সমাধানের উপস্থিতিগুলির ক্ষেত্রে একটি উত্তর দিতে চাই। আমি যখন এই সমস্তটি অধ্যয়ন করেছি তখন থেকে এটি বেশ কিছুক্ষণ হয়েছে, তবে এটি প্রমাণ করার পক্ষে যথেষ্ট নয় যে আপনি এলজি থেকে পৃথক হওয়া কোনও অনুকূল সমাধান হে প্রতিটি উপাদান O_i কে বিনিময় করতে পারেন। S_i এর সাথে S সমাধান করুন এবং এখনও একটি সমাধান O আছে যা ও এর চেয়ে খারাপ নয় ?
সিটিলাও

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

আপনার পরবর্তী প্রশ্নের উত্তর দিতে, না, এটি পর্যাপ্ত নয়। এটি প্রমাণ করে না যে এসটি সর্বোত্তম। (যদি আপনি কেবল দাবি করেন যে ও 'ও এর চেয়ে খারাপ না হয় তবে এমন কিছু ক্ষেত্রে রয়েছে যে এস উপ-অনুকূল, তবুও এই ধরণের বিনিময় করা সম্ভব So সুতরাং এটি প্রমাণ করে যে কোনও ও' অর্জন করা সম্ভব যা ও ডোনগুলির চেয়ে খারাপ নয় is এসটি সর্বোত্তম কিনা এবং লোভী অ্যালগরিদম সঠিক কিনা তা প্রমাণিত হবেন না। আমি উত্তরে বর্ণিত পদ্ধতিটি আরও কিছুটা অধ্যয়ন করার পরামর্শ দিচ্ছি It's এটি জটিল। বিপরীতে প্রমাণটি প্রায়শই বুঝতে সমস্যা হয়))
ডিডাব্লু

14

আমি উদাহরণ হিসাবে নীচের সহজ সর্টিং অ্যালগরিদম ব্যবহার করব:

repeat:
  if there are adjacent items in the wrong order:
     pick one such pair and swap
  else
     break

নির্ভুলতা প্রমাণ করতে আমি দুটি পদক্ষেপ ব্যবহার করি।

  • প্রথমে আমি দেখাই যে অ্যালগরিদম সর্বদা শেষ হয়।
  • তারপরে আমি দেখাব যে সমাধানটি যেখানে এটি সমাপ্ত হবে আমি চাই।

প্রথম পয়েন্টের জন্য, আমি একটি উপযুক্ত ব্যয় ফাংশন বাছাই করি যার জন্য আমি প্রদর্শন করতে পারি যে অ্যালগরিদম প্রতিটি পদক্ষেপে এটি উন্নত করে।

এই উদাহরণের জন্য আমি ইনপুট তালিকার বিপর্যয়ের সংখ্যাটি বেছে নিই। তালিকার তে একটি বিপরীকরণ হ'ল [ i ] , [ জে ] এমন এন্ট্রিগুলির একটি জুড়ি যা [ আই ] > [ জে ] তবে আমি < জে । বিপর্যয়ের সংখ্যা সর্বদা অ-নেতিবাচক থাকে এবং একটি সাজানো তালিকায় 0 টি বিপরীত থাকে।AA[i]A[j]A[i]>A[j]i<j

স্পষ্টত সোয়াপিং দুই সংলগ্ন আইটেম , একজন [ আমি + + 1 ] যে ভুল আদেশ হয় সরিয়ে ফেলা বিপর্যয় একটি [ আমি ] , একজন [ আমি + + 1 ] কিন্তু পাতার অন্য কোন বিপর্যয় অপ্রভাবিত। সুতরাং প্রতিটি পুনরাবৃত্তিতে বিপর্যয়ের সংখ্যা হ্রাস হয়।A[i]A[i+1]A[i],A[i+1]

এটি প্রমাণ করে যে শেষ পর্যন্ত অ্যালগরিদম সমাপ্ত হয়।

বাছাই করা তালিকায় বিপর্যয়ের সংখ্যা 0 হয় যদি সব কিছু ঠিকভাবে চলে যায় তবে অ্যালগরিদম বিপর্যয়ের সংখ্যা কমিয়ে 0. এ নামিয়ে আনবে only আমাদের কেবলমাত্র এটি দেখানো দরকার যে এটি কোনও স্থানীয় নূন্যতমে আটকে না।

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

যদি তালিকাটি বাছাই না করা হয় তবে অবশ্যই কমপক্ষে দুটি আইটেম থাকতে হবে যা সঠিক অবস্থানে নেই। যাক এবং একজন [ ] , আমি < , একটি [ আমি ] > একটি [ ] হতে দুটি আইটেম St মধ্যে পার্থক্য আমি এবং সংক্ষিপ্ত। যেহেতু অ্যালগরিদম থামেনি, তারা সংলগ্ন নয়, তাই আমি + 1 < জে । কারণ আমরা ন্যূনতমতা ধরে নিয়েছি, [ আই ] < [A[i]A[j]i<jA[i]>A[j]iji+1<j এবং[ আমি + 1 ] < [ জে ] , তবে তারপরে[ আই ] < [ জে ] এবং আমাদের একটি দ্বন্দ্ব রয়েছে।A[i]<A[i+1]A[i+1]<A[j]A[i]<A[j]

এটি প্রমাণ করে যে তালিকাটি বাছাই করা হয় তখনই অ্যালগরিদম বন্ধ হয়ে যায়। এবং তাই আমরা সম্পন্ন করেছি।


ব্যাখ্যা করা কৌশলগুলি এত সাধারণ যে তাদের কাছে এই প্রশ্নের মূল বিষয় লোভী অ্যালগরিদম সম্পর্কে কার্যত কিছুই নেই।
অ্যাপাস.জ্যাক 5'18
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.