সীমাবদ্ধতা সহ এলোমেলো ভেক্টর তৈরি করা


10

আমাকে নীচের সীমাবদ্ধতাগুলি পূরণ করে সত্যিকারের সংখ্যার এলোমেলো ভেক্টর তৈরি করতে হবে:

abs(a_i) < c_i;      
sum(a_i)< A;        # sum of elements smaller than A
sum(b_i * a_i) < B; # weighted sum is smaller than B 
aT*A*a < D          # quadratic multiplication with A smaller than D

where c_i, b_i, A, B, D are constants.

এই ধরণের ভেক্টর দক্ষতার সাথে উত্পন্ন করার জন্য সাধারণ অ্যালগরিদম কী হবে?


1
আপনি চতুর্থ বাধ্যতা দ্বারা কি বোঝাতে চেয়েছেন, "একটি মাত্রার এসে গেছে .."
এম Tibbits

আমার ভুল. বর্ণনা শেষ হয়েছে। সাহায্য করার জন্য ধন্যবাদ.
লুই চিফ্রে

এটি কীভাবে a_iবিতরণ অনুসরণ করে p_iএবং এটিও কম c? কারণ বিতরণও p_iকি কম c? আপনি কোন বিতরণে ভাবছেন?
Deps_stats 0

@deps_stats। খুব ভাল পয়েন্ট। সিউডো কোড খুব পরিষ্কার ছিল না। আমার মনে যে বিতরণটি মনে আছে তা হচ্ছে পয়জন বিতরণ। প্রতিটি উপাদান একটি পৃথক ল্যাম্বদা সহ একটি poisson বিতরণ অনুসরণ করে। এই বিষয়টি মনে রেখে আমি অনুমান করি যে প্রথম শর্তটি (a_i <c) প্রয়োজনীয় নয় যেহেতু আমি প্রজন্মের শেষে কেবলমাত্র_এটিকে সন্তুষ্ট করার জন্য পুনরুদ্ধার করতে পারি।
লুইসিফ্রি

আমাকে অন্য কিছু জিজ্ঞেস করি ... পেরেছেন c, A, Bএবং lambdas সংশোধন?
Deps_stats 0

উত্তর:


4

যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি তবে কেবলমাত্র কয়েকটি মাত্রিক এন-ডাইমেনশনাল স্পেস আপনার পয়েন্টগুলি সীমাবদ্ধ করে।

আপনার প্রথম সীমাবদ্ধতা এটিকে হাইপারস্পিয়ারের অভ্যন্তরে সীমাবদ্ধ করে, যা আমাকে কম.গ্রাফিক্স.অ্যালগোরিদম এফএকিউ "গোলকের উপর অভিন্ন বিন্দু" এবং 3-ডি ইউনিটের বলগুলিতে কীভাবে অভিন্ন বিতরণকৃত পয়েন্টগুলি জেনারেট করে তা মনে করিয়ে দেয় ? দ্বিতীয় সীমাবদ্ধতা হাইপারস্পিয়ার থেকে কিছুটা টুকরো টুকরো করে ফেলেছে এবং অন্যান্য সীমাবদ্ধতাগুলি আপনার সীমাবদ্ধতাগুলি পূরণ করে এমন ভলিউমে আরও বিচ্ছুরিত হয়।

আমি মনে করি সবচেয়ে সহজ কাজটি এফএকিউর প্রস্তাবিত পদ্ধতির একটি:

  • কিছু নির্বিচার অক্ষ-সংযুক্ত বাউন্ডিং বাক্স চয়ন করুন যা আমরা নিশ্চিত যে পুরো ভলিউম রয়েছে contains এই ক্ষেত্রে, -c <a_1 <c, -c <a_2 <c, ... -c <a_n <c পুরো বাধা ভলিউম ধারণ করে, যেহেতু এটিতে প্রথম সীমাবদ্ধতার দ্বারা বর্ণিত হাইপারস্পিয়ার রয়েছে এবং অন্যান্য সীমাবদ্ধতা ঝকঝকে করে রাখে দূরে যে পরিমাণে।
  • অ্যালগোরিদম সমানভাবে সেই সীমানা বাক্স জুড়ে পয়েন্ট দেয়। এই ক্ষেত্রে, অ্যালগরিদম স্বতন্ত্রভাবে প্রার্থী ভেক্টরের প্রতিটি সমন্বয়কে কিছু স্বতন্ত্রভাবে বিতরণ করা এলোমেলো সংখ্যাকে -c থেকে + সি পর্যন্ত সেট করে। (আমি ধরে নিচ্ছি যে আপনি এই ভলিউম জুড়ে সমান ঘনত্বের সাথে পয়েন্টগুলি বিতরণ করতে চান। আমি মনে করি আপনি অ্যালগরিদমকে পোইসন বিতরণ বা অন্য কোনও অ-ইউনিফর্ম বিতরণ সহ কিছু বা সমস্ত স্থানাঙ্ক নির্বাচন করতে পারেন, যদি আপনার যদি এর কিছু কারণ থাকে))।
  • একবার আপনার প্রার্থী ভেক্টর হয়ে গেলে প্রতিটি বাধা পরীক্ষা করে দেখুন check এটি যদি তাদের কোনওটিরও ব্যর্থ হয় তবে ফিরে যান এবং অন্য একটি পয়েন্ট চয়ন করুন।
  • আপনার একবার প্রার্থী ভেক্টর পরে, পরে ব্যবহারের জন্য এটি কোথাও সংরক্ষণ করুন।
  • আপনার যদি পর্যাপ্ত সঞ্চিত ভেক্টর না থাকে তবে ফিরে যান এবং অন্য একটি জেনারেট করার চেষ্টা করুন।

পর্যাপ্ত উচ্চমানের এলোমেলো সংখ্যা জেনারেটর সহ, এটি আপনাকে সঞ্চিত স্থানাঙ্কের একটি সেট দেয় যা (প্রত্যাশিত) অভিন্ন ঘনত্বের সাথে আপনার মানদণ্ডগুলি পূরণ করে।

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


সুতরাং আপনি যা পরামর্শ দিচ্ছেন তা কার্যকরভাবে স্থানটির নমুনা দেওয়া। আমি বাউন্ডিং বাক্স সন্ধান ব্যতীত একই ধরণের সমস্যা পেয়েছি স্থিরভাবে (আই, হার্ড-কোডিং হওয়া যায় না) be অভিজ্ঞতা থেকে, যদি আপনার সীমাবদ্ধতাগুলি ফর্মের হয় তবে এটি ভেঙে যায় f1(x1) + f2(x2) == Cএখানে কোনও পরামর্শ?
গ্রোস্টাভ

হ্যাঁ, আপনার যদি সাম্যের ("==") সীমাবদ্ধতা থাকে তবে স্যাম্পলিং পদ্ধতিটি কাজ করে না। গোলকগুলির তলদেশে বা সিলিন্ডার ইত্যাদির মতো পয়েন্টগুলির মতো প্রতিবন্ধকতাগুলি (ব্যাসার্ধ <= আর) গোলকের ভিতরে না রেখে (ব্যাসার্ধ == আর)। পুরো ভলিউমের উপর অভিন্নভাবে পয়েন্ট নির্বাচন করা আপনার পছন্দসই পৃষ্ঠটিকে "কখনই নয়" (সম্ভাব্যতার কাছাকাছি) আঘাত করবে। সুতরাং আপনাকে কোনওভাবে কেবল সেই পৃষ্ঠের পয়েন্টগুলি বেছে নিতে হবে - যেমন, পয়েন্টগুলি [x1, x2, x3] যেমন f1 (x1) + f2 (x2) == সি পেতে, আপনি এলোমেলোভাবে x1 বেছে নিতে পারেন এবং তারপরে জোর করতে পারেন x2 = বিপরীতমুখী_ফ 2 (সি - এফ 1 (এক্স 1))।
ডেভিড ক্যারি

একটি গোলকের পৃষ্ঠের উপর সমানভাবে বিতরণ করা পয়েন্টগুলির বিশেষ ক্ষেত্রে, "গোলকের উপর অভিন্ন র্যান্ডম পয়েন্ট" দেখুন
ডেভিড ক্যারি

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