কীভাবে ছোট জায়গায় সম্ভাবনার ক্রম অনুসারে ভেক্টরগুলির মাধ্যমে পুনরাবৃত্তি করা যায়


12

একটি কথা বিবেচনা মাত্রিক ভেক্টর যেখানে । প্রতিটি আমরা জানি এবং আসুন আমরা স্বাধীন বলে ধরে নিইএই সম্ভাব্যতাগুলি ব্যবহার করে, আউটপুট আকারে স্পেস সাবলাইনারটি ব্যবহার করে বাইনারি ডাইমেনশনাল ভেক্টরগুলিকে আউটপুট আকারের স্পেস সাবলাইনার ব্যবহার করে সম্ভবত সম্ভবত (বন্ধুত্বের ক্ষেত্রে স্বেচ্ছাচারিত পছন্দ সহ) পুনরুক্ত করার কোনও কার্যকর উপায় আছে ? v v i{ 0 , 1 } i p i = P ( v i = 1 ) v i nnvvi{0,1}ipi=P(vi=1)vin

উদাহরণস্বরূপ নিন । সম্ভবত ভেক্টর হয় এবং অন্তত সম্ভাবনা থাকে । ( 1 , 0 , 1 ) { 0 , 1 , 0 }p={0.8,0.3,0.6}(1,0,1){0,1,0}

খুব ছোট আমরা ভেক্টরগুলির প্রত্যেকটিকে তার সম্ভাব্যতা এবং সহজভাবে বাছাই করতে পারে তবে অবশ্যই এটি সাবলাইনার স্পেস ব্যবহার করবে না।n2n

এই প্রশ্নের একটি ঘনিষ্ঠ রূপটি আগে /cs/24123/how-to-iterate-over-vectors-in-order-of-probability এ জিজ্ঞাসা করা হয়েছিল ।


আপনি সেখানেও ফলোআপ প্রশ্ন জিজ্ঞাসা না করার কোনও কারণ আছে? মূল সমস্যাটি কি এখানে সাবলাইনার স্পেসে এটি করার একটি?
সুরেশ ভেঙ্কট

@ সুরেশভেঙ্কট হ্যাঁ সমস্যাটি পুরোপুরি সাবলাইনার স্পেস (আউটপুট আকারে) নিয়ে। আমি মনে করি প্রশ্নটি এখানে খুব কঠিন হতে পারে বলে আমি এখানে জিজ্ঞাসা করেছি।
লেম্বিক

স্থান এবং সমাধান করার জন্য মনে হয় SUBSET-SUM এর অনুরূপ কৌশলগুলির প্রয়োজন (দ্রুত যা জেনে কোন সাবসেটগুলির যোগফলগুলি বিভিন্ন পরিমাণগুলি বাতিল করে দেয়)। সুতরাং, এটির দ্রুত সমাধানের সম্ভাবনা নেই। poly(n)
জেফ্রি ইরভিং

@ জিফ্রেআইরভিং আপনি কি মনে করেন যে এই অন্তর্দৃষ্টিটি আরও আনুষ্ঠানিক করা যেতে পারে?
লেম্বিক

উত্তর:


9

নিম্নলিখিতটি একটি অ্যালগরিদম দেয় যা প্রায় সময় এবং স্পেস ব্যবহার করে।2 এন / 22n2n/2

প্রথমে আসুন আইটেমের সমস্ত সাবসেটের যোগফলগুলি বাছাইয়ের সমস্যাটি দেখুন ।n

এই সাবপ্রব্লেমটি বিবেচনা করুন: আপনার দৈর্ঘ্য দুটি সাজানো তালিকা রয়েছে এবং আপনি তালিকাগুলিতে সংখ্যার জোড় সংখ্যার বাছাই করা তালিকা তৈরি করতে চান। আপনি এটি মোটামুটি সময়ে (আউটপুট আকার), তবে সাবলাইনার স্পেসে করতে চান। আমরা স্থান অর্জন করতে পারি । আমরা একটি অগ্রাধিকারের সারি রাখি এবং ক্রমবর্ধমান ক্রমে অগ্রাধিকারের সারি থেকে অঙ্কগুলি টানতে পারি।( মি 2 ) ( এম )mO(m2)O(m)

ক্রমবর্ধমান ক্রম অনুসারে তালিকাগুলি এবংআমরা অঙ্কগুলি , নিয়ে থাকি এবং এগুলিকে অগ্রাধিকারের কাতারে রাখি।a1am m a i + b 1 i = 1 মিb1bmmai+b1i=1m

এখন, যখন আমরা অগ্রাধিকারের সারির বাইরে সবচেয়ে ছোট অবশিষ্ট যোগফল , যদি আমরা তখন যোগফলকে the অগ্রাধিকার সারিতে রাখি । অগ্রাধিকারের সারিতে স্থানটি প্রাধান্য পায়, যা সর্বদা সর্বনিম্ন যোগফল থাকে। এবং সময়টি হ'ল , যেহেতু আমরা প্রতিটি অগ্রাধিকার সারি ক্রিয়াকলাপের জন্য ব্যবহার করি। এটি দেখায় যে আমরা সময় এবং স্পেসে সাব-প্রব্লেমটি করতে পারি । j < m a i + b j + 1 m O ( m 2 লগ এম )ai+bjj<mai+bj+1mO(m2logm)( এম 2 লগ এম ) ( এম )O(logm)O(m2logm)O(m)

এখন, সংখ্যার সমস্ত উপ- সংখ্যার যোগফলগুলি বাছাই করার জন্য , আমরা কেবলমাত্র এই সাবরুটিন ব্যবহার করি যেখানে আইটেমের প্রথম অর্ধের সেট এবং তালিকাটি সেট আইটেম দ্বিতীয়ার্ধ। আমরা একই তালিকাটি অ্যালগোরিদমের সাথে পুনরাবৃত্তভাবে খুঁজে পেতে পারি finda i b inaibi

আমরা এখন আসল সমস্যাটি বিবেচনা করব। কে স্থানাঙ্কের সেট হতে দিন এবং এর স্থানাঙ্কের সেট হতে দিন । তারপরে 0 এস 1 1 i এস 0S00S11

iS0p(vi=0)iS1p(vi=1)=1inp(vi=0)iS1p(vi=1)p(vi=0)=1inp(vi=0)exp(iS1logp(vi=1)p(vi=0)).

এই সংখ্যাগুলি বাছাই করা বাছাই করার , তাই আমরা এর উপসর্গের বাছাই করতে সমস্যা হ্রাস করেছি আইটেম।এনiS1logp(vi=1)logp(vi=0)n


সেখানে কি সম্ভবত কোনও হ্রাস রয়েছে যা একটি বহু সময় / স্থান সমাধানকে শ্রবণযোগ্য করে তুলবে?
লেম্বিক

আপনি সম্ভবত কোনও সমাধান পেতে যাচ্ছেন না যা than চেয়ে কম সময় নেয় , কারণ এটি আউটপুটটির আকার (এবং আমার সমাধানটি সময় নেয়)। যদিও আমার কাছে জায়গার জন্য ভাল নিম্ন বাউন্ড নেই। এন2nn2n
পিটার শোর

ধন্যবাদ. আমি অবশ্যই পলি টাইম বলতে চাইনি বরং আউটপুট আকার এবং পলি স্পেসে লিনিয়ারিশ কিছু বললাম।
লেম্বিক

4

আমরা স্পেস এটি করতে পারি (যদি আমরা চলমান সময়ের বিষয়ে চিন্তা না করি)।O(n)

  1. একটি প্রদত্ত STRING এর জন্য , আমরা স্থান গনা করতে সংখ্যা স্ট্রিং যে বেশী সম্ভবত হয় ; অর্থাৎ st : কেবলমাত্র সমস্ত এবং সেন্ট এর সংখ্যাটি গণনা করুন । মনে রাখবেন যে আউটপুটে স্ট্রিং ক্রমিক সংখ্যা ।x{0,1}nO(n)r(x)xxp(x)>p(x)x{0,1}nxp(x)>p(x)r(x)x
  2. x r ( x ) = k O ( n ) x { 0 , 1 } n xkxr(x)=kO(n)x{0,1}nxr(x)xr(x)=k
  3. k02n1kxr(x)=k

(আমাদেরও সম্ভাব্য বন্ধনের যত্ন নেওয়া উচিত তবে এটি কঠিন নয়))


ধন্যবাদ. এটি তবে বেশ ধীর গতির অ্যালগরিদম :)
লেম্বিক

0

সম্পাদনা: এই উত্তরটি ভুল। বিশদ জন্য মন্তব্য দেখুন। ~ gandaliter

O(2n)O(n)

  1. (i,pi)|0.5pi|

  2. vvi1pi>0.50vviv

  3. সাজানো তালিকায় এই পুনরাবৃত্ত ফাংশনটি এবং একটি খালি ভেক্টরকে কল করুন।

010.5

O(2n)O(n)nO(2n)O(n)O(2n)সময় পদক্ষেপ। অতএব এই অ্যালগরিদম সবচেয়ে খারাপ ক্ষেত্রে জটিলতা সর্বোত্তম।


Θ(2n)

ধন্যবাদ। আমি পরিষ্কারভাবে এটি যথেষ্ট যত্ন সহকারে পড়িনি! আমি আমার উত্তর সম্পাদনা করেছি।
গন্ডালিটার

3
v1=12n1v1=1pi=0.5

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