সত্যিই কি নিম্ন সীমানা প্রমাণ করা সম্ভব?


24

কোনও গণনামূলক সমস্যা দেওয়া, এই ধরনের গণনার জন্য নিম্ন সীমানা খুঁজে পাওয়া কাজটি কি আসলেই সম্ভব? আমি মনে করি এটি কীভাবে একটি একক গণ্য পদক্ষেপকে সংজ্ঞায়িত করা হয় এবং আমরা প্রমাণের জন্য কোন মডেলটি ব্যবহার করি তবে এটি কি সাধারণভাবে আমরা সাধারণভাবে নীচের দিকে আবদ্ধ প্রমাণ করি? আমি কি এর মানে হল যে আমরা মত "সমস্যা কিছু প্রমাণ করতে পারেন হয় যতো তাড়াতাড়ি সমাধান করা যায় না টি ( এক্স ) সময় 'বদলে" সমস্যা এক্স মধ্যে সমাধান করা যেতে পারে টি ( এক্স ) সময় বা দ্রুততর "?Xt(X)Xt(X)

আমি সেগুলির নিম্নতর সীমানা এবং প্রমাণগুলির জন্য বিশেষত তথ্য সন্ধান করার চেষ্টা করেছি, তবে আমি বইটিতে / কাগজপত্রগুলিতে / ওয়েবসাইটে কোনও সুপারিশ করে আসলেই কোনও আগ্রহ খুঁজে পাচ্ছি না?

উত্তর:


19

আমরা একেবারে এই জিনিস প্রমাণ করতে পারি।

অনেক সমস্যা যেমন একটি সেট ন্যূনতম খোঁজার যে তুচ্ছ নিম্ন সীমা আছে, সংখ্যা (যে বাছা হয় না / কোন ভাবেই গঠিত) অন্তত লাগে Ω ( ) সময়। এই জন্য প্রমাণ সহজ: একটি প্রকল্পিত অ্যালগরিদম যে রান ( এন ) সময় ইনপুট সংখ্যা সব পরীক্ষা করতে পারবেন না। সুতরাং আমরা যদি কিছু ইনপুটটিতে অ্যালগরিদম চালাই তবে আমরা লক্ষ্য করতে পারি যে এটি কখনই ইনপুটটির কোনও নির্দিষ্ট উপাদান পরীক্ষা করে নি examined সেই উপাদানটি সর্বনিম্নে পরিবর্তন করা, আমরা ব্যর্থ হওয়ার জন্য অ্যালগরিদম পেতে পারি।nΩ(n)o(n)

তুলনামূলক-ভিত্তিক মডেলটি বাছাইয়ের জন্য কম তুচ্ছ নিম্ন নিম্ন সীমাবদ্ধ। তার প্রমাণটি নিম্নলিখিত লাইনগুলি বরাবর যায়: এন সংখ্যার একটি ইনপুট দেওয়া হয় , সেখানে এন রয়েছে ! সম্ভাব্য আউটপুট (ইনপুটটি বাছাই করা তালিকার কোনও অনুগমন হতে পারে, সুতরাং আউটপুটটিও ইনপুটটির কোনও ক্রমক্রিয়া হতে পারে)। যদি আমরা কেবল তুলনা করাতেই সীমাবদ্ধ থাকি, তবে এন দিতে সক্ষম হওয়ার জন্য আমাদের অ্যালগরিদমকে (কমপক্ষে) কমপক্ষে লগ 2 ( এন ! ) = Ω ( এন লগ এন ) তুলনা করা দরকারΩ(nlogn)nn!log2(n!)=Ω(nlogn)বিভিন্ন আউটপুট।n!

EXPTIMEf

fO(f(n))o(f(n)logn)

f

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


ইনপুট বা আউটপুট আকার সবচেয়ে সাধারণ নিম্ন সীমা।
রাফায়েল

14

Ω(nlogn)n

O(nlogn)

LNLPNPPSPACE,
LPSPACE

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


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

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

3

n

যাইহোক, প্রশ্নের একটি পয়েন্ট রয়েছে যা লোয়ার বাউন্ড (বা সাধারণভাবে জটিলতার সীমা) সম্পর্কে আরও কিছু মন্তব্য করার আহ্বান জানায়।

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

গণনার ব্যয় নির্ধারণের জন্য তথ্য আকারের ক্ষেত্রে এটি একই প্রযোজ্য। একক পূর্ণসংখ্যা বা দুটি পূর্ণসংখ্যার আকারের একক হিসাবে গ্রহণ করা কোনও তাত্পর্যপূর্ণ নয়।

তবে দুটি পছন্দ অবশ্যই সম্পর্কিত হতে হবে।

nlognO(logn)

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


একটি স্ট্রিংয়ের কোনও প্যাটার্নের সমস্ত ঘটনা তুচ্ছভাবে সন্ধান করার জন্য পুরো স্ট্রিংটি পড়া দরকার: যদি প্যাটার্নটি "ক" হয় তবে স্ট্রিংয়ের প্রতিটি অক্ষর পরীক্ষা না করে আপনি সমস্ত উপস্থিতি খুঁজে পাবেন না।
ডেভিড রিচার্বি

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

@ ডেভিডরিচার্বি আপনি কেন জিজ্ঞাসা করলেন, আপনি তা জানতেন?
বাবু

আমি আপনার দ্বিতীয় মন্তব্য বুঝতে পারি না। আপনার মূল উত্তরে একটি ভুল দাবি রয়েছে। অবশ্যই আমি জানতাম যে এটি ভুল ছিল: এটিই আমি এটি উল্লেখ করতে সক্ষম হয়েছি! অন্য লোকেদের হয়ত এটি ভুল ছিল না।
ডেভিড রিচার্বি

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