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


24

আমার কাছে এলোমেলো ক্রমে আইটেমের একটি তালিকা উত্পাদন করার দুটি উপায় রয়েছে এবং তারা সমান ন্যায্য (নিরপেক্ষ) কিনা তা নির্ধারণ করতে চাই।

আমি প্রথম যে পদ্ধতিটি ব্যবহার করি তা হ'ল উপাদানগুলির পুরো তালিকাটি তৈরি করা এবং তারপরে এটি একটি শ্যাফেল করা (কোনও ফিশার-ইয়েটস বদলান বলুন)। দ্বিতীয় পদ্ধতিটি একটি পুনরাবৃত্ত পদ্ধতিটি যা প্রতিটি সন্নিবেশে তালিকাস্ত্র রাখে। সিউডো-কোডে সন্নিবেশ ফাংশনটি হ'ল:

insert( list, item )
    list.append( item )
    swap( list.random_item, list.last_item )

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

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


আপনি আপনার অ্যালগোরিদমের প্রচুর সংখ্যক রানের উপরে একটি পরিসংখ্যানগত নমুনা করতে পারেন এবং এটি প্রত্যাশিত মানের সাথে তুলনা করতে বা এটিতে একরকম এলোমেলো পরীক্ষা করতে পারেন।
ডেভ ক্লার্ক

আপনি বিতরণ পরীক্ষা করতে চান। এটি কি সমানভাবে বিতরণ করা হয়, বা স্কিউড। তবে আমার সন্দেহ, আপনার এটি অনেক বার চালানো দরকার।
ডেভ ক্লার্ক

আমি কীভাবে করব তা সম্পর্কে আমি পরিষ্কার নই। এটি আমার পরে থাকা সামগ্রীর এলোমেলোতা নয়, ক্রমটির ক্রমবিন্যাস। অর্ডার বিতরণ পরিমাপ করতে পারে কোন পদ্ধতির?
এডিএ-কিএ মর্ট-ওরা-ওয়াই

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

@ এডিএ-কামোর্ট-ওরা-ওয়াই: আপনার ইচ্ছা আমার আদেশ। ;)
রাফেল

উত্তর:


22

প্রথমে আসুন আমরা দুটি সম্ভবত সুস্পষ্ট, তবে গুরুত্বপূর্ণ অনুমানগুলি তৈরি করি:

  1. _.random_item শেষ অবস্থান চয়ন করতে পারেন।
  2. _.random_itemসম্ভাব্যতা 1 সহ প্রতিটি অবস্থান চয়ন করে1n+1

আপনার অ্যালগরিদমের যথার্থতা প্রমাণ করতে আপনার এখানে ব্যবহৃত ব্যবহারের মতোই একটি সূক্ষ্ম যুক্তি প্রয়োজন :

  • একক তালিকার জন্য কেবল একটি সম্ভাবনা রয়েছে, তাই এটি অভিন্নভাবে বেছে নেওয়া হয়েছে।
  • ধরে নিচ্ছি যে উপাদানগুলির তালিকাটি সমানভাবে নির্বাচিত হয়েছিল (সমস্ত ক্রমশক্তি থেকে), দেখান যে আপনার টেকনিক দ্বারা প্রাপ্ত এন + 1 উপাদানগুলির সাথে একটি সমানভাবে চয়ন করা হয়েছে।nn+1

এখান থেকে প্রমাণটি ভুল। সঠিক প্রমাণের জন্য দয়া করে নীচে দেখুন; আমি এটি এখানে রেখেছি কারণ ভুল এবং নিম্নলিখিত পদক্ষেপগুলি উভয়ই (যা ভাল) শিক্ষাগত হতে পারে।

স্থানীয় (যেমন উপাদান-ভিত্তিক) যে সম্পত্তি রাখতে হবে তা অর্জন করা কার্যকর, কারণ পুরো অনুচ্ছেদের বিষয়ে তর্ক করা বেদনাদায়ক। লক্ষ্য করুন যে যদি প্রতিটি উপাদান প্রতিটি পদে থাকার সমান সম্ভাবনা থাকে তবে সমানভাবে সমানভাবে নির্বাচন করা হয়

πPermnPr(L=π)=1n!i=1n j=1nPr(Li=j)=1n(1)

যেখানে এবং আমরা তালিকাভুক্ত সরলতার জন্য ধরে নিই যে আমরা তালিকায় { 1 , , n। .োকানn=|L|{1,,n}

এখন, আসুন আমরা স্টোর উপাদানটি সন্নিবেশ করানোর সময় আপনার কৌশলটি কী করে তা দেখুন । আমাদের তিনটি কেস বিবেচনা করতে হবে (অদলবদলের পরে):n+1

  1. তালিকার একটি উপাদান, অদলবদল নয়, অর্থাৎ এবং জে { 1 , , n }i{1,,n}j{1,,n}
  2. তালিকায় উপাদান, অদলবদল, অর্থাত্ এক এবং { 1 , ... , এন }i=n+1j{1,,n}
  3. নতুন উপাদান, যেমন এবং জে = এন + 1i{1,,n+1}j=n+1

প্রতিটি ক্ষেত্রে, আমরা উপাদান অবস্থান i এর সম্ভাব্যতা গণনা করি ; সমস্ত 1 হতে পরিণত হতে হবেji (যা(1) এরকারণে যথেষ্ট)। যাকপিএন=11n+1(1) পুরানো তালিকার কোনও পদে (এনডাকশন অনুমান) এবংপিএস=1এরপ্রথমএনউপাদানগুলিরমধ্যে একটির সম্ভাব্যতা হতে পারেpn=1nn কোনও অবস্থানের দ্বারা নির্বাচিত হওয়ার সম্ভাবনা(অনুমান 1, 2)। নোট করুন যেএনউপাদানগুলিরসাথে তালিকার কোয়েসএবং অদলবদলের অবস্থানটি বাছাই করাস্বাধীন ইভেন্ট, সুতরাং যৌথ ইভেন্টেরকারণগুলিরসম্ভাব্যতা, উদাহরণস্বরূপps=1n+1random_itemn

Pr(Li=j,i swapped)=Pr(Li=j)Pr(i swapped)=pnps

জন্য । এখন গণনার জন্য।i,j{1,,n}

  1. আমরা কেবল পুরানো উপাদানগুলি বিবেচনা করি । এই জাতীয় এলিমেন্ট j স্থিতি আমি থাকি এবং কেবলমাত্র যদি এটি সন্নিবেশ করার আগে সেখানে ছিল এবং আমি অদলবদল হিসাবে নির্বাচিত না হই, তা হ'ল njii

    Pr(Li=j)=pn(1ps)=1nnn+1=1n+1

  2. এখানে আমরা বিবেচনা করি যে পুরানো উপাদানগুলির মধ্যে একটি সর্বশেষ অবস্থানে চলে গেছে। এলিমেন্ট পুরানো যে কোনও অবস্থাতেই থাকতে পারত, সুতরাং আমরা সমস্ত সম্ভাবনার সমষ্টি যে জে আমি অবস্থানে ছিলাম এবং আমি অদলবদল হিসাবে নির্বাচিত হই , তা হ'লjjii

    Pr(Ln+1=j)=i=1npnps=i=1n1n1n+1=1n+1

  3. নতুন মৌল অবস্থানে শেষ পর্যন্ত যদি এবং কেবল যদি আমি swap 'র অবস্থান হিসেবে নির্বাচিত করা হয়, যে হয়ii

    Pr(Li=j)=ps=1n+1

সমস্ত ভাল পরিণত হয়েছে, আপনার সন্নিবেশ কৌশল সত্যই অভিন্নতা সংরক্ষণ করে। প্রবর্তনের শক্তি দ্বারা, এটি প্রমাণ করে যে আপনার অ্যালগোরিদম সমানভাবে বিতরণ করা ক্রমানুসরণ তৈরি করে।

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


হিসাবে স্টিভেন মন্তব্য সঠিকভাবে অভিহিত করেছেন, উপরোক্ত প্রমাণ মৌলিকভাবে ত্রুটিপূর্ণ হিসাবে না রাখা; আপনি ডান-হাতের পরিপূরণকারী অনুক্রমের সেটে বিতরণগুলি তৈরি করতে পারেন, তবে বাম দিকে নয় ¹(1)

অতএব, আমাদের অনুমতির সম্ভাবনা নিয়ে কাজ করতে হবে, যা সর্বোপরি খারাপ নয় to random_itemপোস্টের একেবারে শুরুতে বর্ণিত অনুমানগুলি এবং প্ররোচিত কাঠামোটি যথাযথভাবে স্থিত থাকে, আমরা সেখান থেকে চালিয়ে যাই। যাক পর তালিকা বোঝাতে { 1 , ... , } সন্নিবেশিত করা হয়েছে।L(k){1,,k}

যাক এর একটি অবাধ বিন্যাস { 1 , ... , এন + + 1 } । এটি হিসাবে অনন্যভাবে লেখা যেতে পারেπPermn+1{1,,n+1}

π=(π(1),π(2),,π(i1),n+1,π(i+1),,π(n),π(i))

πPermni{1,,n+1}Pr(L(n)=π)=1n!random_itemi1n+1πi

Pr(L(n+1)=π)=Pr(L(n)=π)Pr(i swapped)=1(n+1)!

যা আমাদের দেখাতে হয়েছিল। প্রবর্তনের শক্তি দ্বারা, এটি প্রমাণ করে যে আপনার অ্যালগোরিদম সমানভাবে বিতরণ করা ক্রমানুসরণ তৈরি করে।


  1. {(1,2,3,4),(2,3,4,1),(3,4,1,2),(4,1,2,3)}140

4
'লক্ষ্য করুন যে যদি প্রতিটি উপাদানগুলির প্রতিটি পদে থাকার সমান সম্ভাবনা থাকে তবে কোনও ক্রম ছাড়াই সমানভাবে চয়ন করা হয় "- এটি সত্য নয়। উদাহরণস্বরূপ, চারটি উপাদানের উপর চারটি আদেশের সেট {(1, 2, 3, 4), (2, 3, 4, 1), (3, 4, 1, 2), (4, 1, 2, 3) )} আপনার প্রতিবন্ধকতা সন্তুষ্ট করে, তবে অবশ্যই সমস্ত আদেশের সেট নয়। দুর্ভাগ্যক্রমে আপনাকে আপনার ক্রমবর্ধনের বিশ্বব্যাপী বৈশিষ্ট্যগুলি ব্যবহার করতে হবে কারণ স্থানীয়তার কোনও শর্তই অভিন্নতা নির্ধারণের জন্য যথেষ্ট নয়।
স্টিভেন স্টাডনিকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.