এই স্কোয়ার রুটে আবদ্ধ অ্যালগরিদমের সন্ধানকারী লুপের আক্রমণকারী কীভাবে পাওয়া যায়?


10

মূলত গণিত.এস.ই তে কিন্তু সেখানে উত্তর দেওয়া হয়নি।

নিম্নলিখিত অ্যালগরিদম বিবেচনা করুন।

u := 0
v := n+1;
while ( (u + 1) is not equal to v) do
   x :=  (u + v) / 2;
   if ( x * x <= n) 
     u := x;
   else
     v := x;
   end_if
end_while 

যেখানে ইউ, ভি, এবং এন পূর্ণসংখ্যা এবং বিভাগ অপারেশনটি পূর্ণসংখ্যা বিভাগ।

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

ক্লাসে, পোস্ট-শর্তটি এবং ইনভারেন্টেন্ট । পোস্ট-কন্ডিশন এবং আক্রমণকারীরা কীভাবে প্রাপ্ত হয়েছিল তা আমি সত্যিই বুঝতে পারি না। আমি অনুমান করি যে পোস্টের শর্তটি আপনার ... যা স্পষ্টভাবে কেস নয়। সুতরাং আমি কীভাবে শর্ত এবং আক্রমণকারীটি প্রাপ্ত হয়েছিল তা নিয়ে ভাবছি। আমি আরও ভাবছি যে পোস্ট-কন্ডিশনটি ব্যবহার করে প্রাক-শর্তটি কীভাবে পাওয়া যায়।0u2n<(u+1)20u2n<v2,u+1vu+1=v


আপনি কি হোয়ের যুক্তির সাথে পরিচিত, এবং আপনি কি উত্তরটি স্পর্শ করবেন বলে আশা করেন?
রাফেল

উত্তর:


8

গিলস ঠিক বলেছেন যে সাধারণ কৌশলটি আকর্ষণীয় পর্যবেক্ষণের জন্য মাছ ধরতে চলেছে।

এই ক্ষেত্রে, আপনি পর্যবেক্ষণ করতে পারেন যে প্রোগ্রামটি বাইনারি অনুসন্ধানের একটি উদাহরণ, কারণ এতে নিম্নলিখিত আকার রয়েছে:

while i + 1 != k
  j := strictly_between(i, k)
  if f(j) <= X then i := j
  if f(j) > X then k := j

তারপর আপনি আপনার বিশেষ করে চলা মাত্র f, X... বাইনারি অনুসন্ধান জন্য সাধারণ পরিবর্তিত মধ্যে। দ্বিজস্ত্রে বাইনারি অনুসন্ধানের একটি সুন্দর আলোচনা রয়েছে


7

u+1=v প্রকৃতপক্ষে লুপের একটি পোস্ট-শর্ত (কেন আপনি মনে করেন এটি "স্পষ্টভাবে" কেস নয়?)। এটি সর্বদা কিছুক্ষণ লুপের ক্ষেত্রে ঘটে যা এতে থাকে না break: যখন লুপটি প্রস্থান করে, তখনই এটি হতে পারে কারণ লুপের শর্তটি (এখানে, ) মিথ্যা false লুপটি এখানে থেকে বেরিয়ে আসার পরে কেবল একমাত্র সত্য হবে না (এই অ্যালগরিদমটি আসলে আপনার আকর্ষণীয় কিছুকে গণনা করে, যেমনটি আপনি নিজের ক্লাসে দেখেছেন, তাই এবং post এছাড়াও পোস্ট-কন্ডিশন) তবে এটি সর্বাধিক সুস্পষ্ট।u+1vu=[this interesting thing]v=[this interesting thing]

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

আপনি যদি কিছু মান দিয়ে কয়েকটি পুনরাবৃত্তির জন্য লুপটি চালান , আপনি প্রতিটি পুনরাবৃত্তিতে দেখতে পাবেন:n

  • হয় লাফিয়ে লাফিয়ে ;u(u+v)/2
  • অথবা লাফিয়ে নেমে আসে ।v(u+v)/2

বিশেষত, চেয়ে কম শুরু করেন এবং এটি কখনই ছাড়তে পারবেন না। তবুও , ইতিবাচক শুরু করেন এবং বৃদ্ধি পান, যখন শুরু হয় এবং হ্রাস পায়। সুতরাং পুরো প্রোগ্রাম জুড়েই একজন আক্রমণকারী।uvuvn+10uvn+1

একটি জিনিস যা এতটা স্পষ্ট নয় তা হ'ল কখনই সমান হতে পারেন । এটি গুরুত্বপূর্ণ: যদি এবং কখনও সমান হন, আমাদের এবং লুপটি চিরতরে চলে যাবে। সুতরাং আপনাকে প্রমাণ করতে হবে যে অ্যালগরিদম সঠিক (যেমন চিরতরে লুপ হয় না) প্রমাণ করার জন্য এবং কখনই সমান হন না। এই প্রয়োজনীয়তাটি চিহ্নিত হয়ে গেলে, এটি প্রমাণ করা সহজ (আমি এটিকে একটি অনুশীলন হিসাবে ছেড়ে দিচ্ছি) যে একটি লুপ আক্রমণকারী (মনে রাখবেন যে এবং পূর্ণসংখ্যা, তাই এটি equivalent এর সমতুল্য) )।uvuvx=u=vuvu<vuvu+1v

প্রোগ্রামের শেষে , যেহেতু আপনাকে পোস্ট-শর্ত দেওয়া হয়েছিল সেগুলিও আপনার লেখা যেতে পারে (অংশ তুচ্ছ)। আমরা সাথে জড়িত থাকার মতো পোস্ট-কন্ডিশনের কারণটি হ'ল আমরা প্রোগ্রামটির ফলাফলটিকে ইনপুট দিয়ে টাই করতে চাই । কেন এই সুনির্দিষ্ট অবস্থা? আমরা এমন কিছু সন্ধান করছি যা যথাসম্ভব যথাযথভাবে সুনির্দিষ্টভাবে পাওয়া যায় এবং আমরা লুপের ভিতরে কোথায় উপস্থিত হয় তা লক্ষ্য করি:v=u+1u2n<v20u2nnn

  • আমাদের ;uxv
  • যখন , আমরা পরের হিসাবে বেছে , যাতে (এবং পরিবর্তন হয় না);x2nuxu2nv
  • যখন , আমরা পরের কে , যাতে (এবং পরিবর্তন করেন না)।x2>nvxn<v2u

এই দ্বৈতত্ত্ব ইঙ্গিত দেয় যে সর্বদাঅন্য কথায়, আমরা সন্দেহ করি যে এটি একটি লুপ আক্রমণকারী। এটি যাচাই করা পাঠকের কাছে অনুশীলন হিসাবে বাকী রয়েছে (শুরুতে সম্পত্তিটি সত্য কিনা তা মনে রাখবেন)।u2n<v2

এবং এখন আমরা এই সমস্ত কাজটি করে ফেলেছি, আমরা দেখতে পাচ্ছি যে এবং : হল বর্গমূল, নিকটতম পূর্ণসংখ্যার সাথে বৃত্তাকার।( u + 1 ) 2 > n ইউ এনu2n(u+1)2>nun


"সুতরাং আপনাকে অ্যালগরিদম সঠিক কিনা তা প্রমাণ করার জন্য আপনাকে এবং v সমান হয়ে উঠতে হবে" আমি মনে করি এই বাক্যটি একটি "নয়" অনুপস্থিত।
sepp2k

@ কেনলি যেহেতু স্ট্যাক এক্সচেঞ্জ অর্থে এটি আপনার প্রশ্ন, আপনি কি কোনও বিশেষ উন্নতি চান?
গিলস 21:34-
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.