SAT স্থানীয় অনুসন্ধানের জন্য ডেটা স্ট্রাকচার সমর্থন করে


20

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

procedure GSAT(A,Max_Tries,Max_Flips)
  A: is a CNF formula
  for i:=1 to Max_Tries do
    S <- instantiation of variables
    for j:=1 to Max_Iter do
      if A satisfiable by S then
        return S
      endif
      V <- the variable whose flip yield the most important raise in the number of satisfied clauses;
      S <- S with V flipped;
    endfor
  endfor
  return the best instantiation found
end GSAT

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

অনেক স্থানীয় অনুসন্ধান অ্যালগরিদমগুলি ভেরিয়েবলের অ্যাসাইনমেন্টটি ফ্লিপ করে যা সন্তুষ্ট ধারাগুলির সংখ্যা সর্বাধিক করে তোলে। অনুশীলনে, কোন অপারেটিং সিস্টেমটি দক্ষতার সাথে সমর্থন করে?

পাঠ্যপুস্তকগুলি প্রায়শই বাদ যায় বলে মনে হয় এটি। একটি উদাহরণ এমনকি বিখ্যাত রাসেল এবং নরভিগ বইটি


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

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

"ডান "টি সর্বোত্তম হতে পারে তবে বিশ্বাস করার কারণ আছে যে এখন যে সর্বাধিক বৃদ্ধি করবে সে সঠিক? সর্বোপরি, সমস্যাটি লোভের দ্বারা সমাধানযোগ্য নয়
রাফায়েল

উত্তর:


9

প্রয়োজনীয় ডেটা স্ট্রাকচার হ'ল একটি হ'ল তালিকা , প্রতিটি চলকটির জন্য একটি তালিকার মধ্যে থাকা ভেরিয়েবলটি থাকে। এই তালিকাগুলি একবার তৈরি করা হয়, যখন সিএনএফের প্রথমবার পড়া হয় first সন্তুষ্ট ধারাগুলি গণনা করতে পুরো সিএনএফ সূত্রটি স্ক্যান করা এড়াতে এগুলি নীচের 3 এবং 5 ধাপে ব্যবহৃত হয়।

প্রতিটি ভেরিয়েবল উল্টানোর চেয়ে একটি ভাল অ্যালগরিদম হ'ল:

  1. অসন্তুষ্ট ক্লজগুলিতে কেবলমাত্র পরিবর্তনশীলগুলির একটি তালিকা তৈরি করুন।
  2. x
  3. x
  4. x
  5. x
  6. x
  7. x
  8. পদক্ষেপ 1 এ পাওয়া বাকি ভেরিয়েবলগুলির জন্য পদক্ষেপগুলি 2-7 পুনরাবৃত্তি করুন।
  9. Step ধাপে রেকর্ড করা সর্বাধিক সংখ্যার সাথে ভেরিয়েবলটি ফ্লিপ করুন।

ডেটা স্ট্রাকচারের জন্য একটি রেফারেন্স (প্রায়শই সংলগ্ন তালিকা হিসাবেও পরিচিত) উদাহরণস্বরূপ লায়েন্স এবং মার্কস-সিলভা, ব্যাকট্র্যাকিং স্যাট সলভার্সের জন্য দক্ষ ডেটা স্ট্রাকচারস, 2004।

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