ডিএসটি-তে ক্র্যাশ কোর্স
ডিম্পস্টার – শাফার তত্ত্ব (ডিএসটি) একটি বিশ্বাস গঠনের জন্য প্রমাণের বিভিন্ন উত্সকে একত্রিত করার জন্য একটি পদ্ধতি সরবরাহ করে। সম্ভাব্য বিবৃতি (যার মধ্যে একটি সত্য উত্তর) এর একটি তালিকা দেওয়া, প্রতিটি সম্ভাব্য বিবৃতি সংমিশ্রণকে একটি "ভর" অর্পণ করা হয় যা সমর্থনকারী প্রমাণের ডিগ্রি নির্দেশ করে। সমস্ত সংমিশ্রণের মোট ভর সর্বদা 1 এর সমান।
এই ভর অ্যাসাইনমেন্ট থেকে, আমরা এই সংমিশ্রণের সত্য উপর একটি যুক্তিসঙ্গত নিম্ন বাউন্ড (বিশ্বাস) এবং উপরের আবদ্ধ (প্রশংসনীয়) তৈরি করতে পারি। যে bel(X)কোনও সেট এক্স এর বিশ্বাস হ'ল এক্স এর সমস্ত সাবটাইটের (নিজেকে সহ) জনগণের যোগফল। যে pl(X)কোনও সেট এক্সের প্রশ্রয়যোগ্যতা হ'ল "1 - সমস্ত সেটের জনগণের যোগফল X এর সাথে পৃথক হয়"। নীচের চিত্রটি ব্যাখ্যা করে যে কীভাবে বিশ্বাস এবং করণীয়তা অনিশ্চয়তার সাথে সম্পর্কিত।
উদাহরণস্বরূপ, ধরুন একটি ট্রাফিক আলো যে হয় এক হতে পারে যে দিন Green, Yellow, অথবা Rইডি। বিকল্পগুলির তালিকা এবং একটি সম্ভাব্য ভর অ্যাসাইনমেন্ট নীচে দেখানো হয়েছে:
binary interpretation m(X) bel(X) pl(x)
000 null 0 0 0
001 R 0.2 0.2 0.7
010 Y 0.1 0.1 0.3
011 Y||R 0.05 0.35 0.8
100 G 0.2 0.2 0.65
101 G||R 0.3 0.7 0.9
110 G||Y 0 0.3 0.8
111 G||Y||R 0.15 1 1
এই জনগণকে একটি অ্যারে দ্বারা চিহ্নিত করা যায় [0, 0.2, 0.1, 0.05, 0.2, 0.3, 0, 0.15]।
এখন প্রশ্ন, জনসাধারণ কী তা আমরা কীভাবে সিদ্ধান্ত নেব? ধরা যাক যে আমাদের কাছে একটি সেন্সর ছিল আলোকের দিকে তাকিয়ে, এবং এই সেন্সরটি ইঙ্গিত দেয় যে আলো সবুজ নয় ; তবে, আমরা জানি যে 20% সম্ভাবনা রয়েছে যে সেন্সরটি একটি এলোমেলো, প্রফুল্ল সংকেত পাঠিয়েছে। এই প্রমাণের টুকরোটি বৃহত্তর বিতরণ দিয়ে বর্ণনা করা যেতে পারে [0, 0, 0, 0.8, 0, 0, 0, 0.2]যেখানে {Y, R 0. এর ভর 0.8 এবং {G, Y, R a এর ভর 0.2 থাকে।
একইভাবে, আসুন আমরা বলি যে কিছু দ্বিতীয় সেন্সরটি নির্দেশ করে যে আলোটি লাল নয় , তবে আমরা এটিও জানি যে সেন্সরটি ভুল এবং আলো আসলে লাল is এই প্রমাণের টুকরাটি দিয়ে বর্ণনা করা যেতে পারে [0, 0.3, 0, 0, 0, 0, 0.7, 0]যেখানে {G, Y a এর ভর ০.7 এবং {R a এর ভর ০. 0.3।
একক ভর বন্টন গঠনের জন্য প্রমাণের এই দুটি টুকরোটিকে একীভূত করতে, আমরা ডেম্পাস্টারের রুল অফ কম্বিনেশন ব্যবহার করতে পারি।
ড্যাম্পস্টারের সম্মিলনের নিয়ম
দুই ভর নিয়োগ m1এবং m2গঠন মিলিত হতে পারে m1,2নিম্নলিখিত সূত্র ব্যবহার করে, যেখানে A, Bএবং Cপ্রতিনিধিত্ব সম্ভাব্য সমাহার (উপরে টেবিলের সারি)।
যেখানে কে রেন্ডারমালাইজেশনের জন্য ব্যবহৃত "সংঘাতের" একটি পরিমাপ, এবং এটির দ্বারা গণনা করা হয়:
নীচের চিত্রের মতো জ্যামিতিকভাবেও এই প্রক্রিয়াটি বর্ণনা করা সম্ভব। যদি A = 011(হলুদ বা লাল) এবং B = 101(সবুজ বা লাল) হয়, তবে m1(A) * m2(B) অবদানের মান (যোগ করা হয়) m1,2(001)(লাল) এর মান । এ এবং বি এর সমস্ত সম্ভাব্য সংমিশ্রণের জন্য এই প্রক্রিয়াটি পুনরাবৃত্তি হয় A&B != 0। পরিশেষে, অ্যারেটি পুনর্নির্মাণ করা হয় যাতে মানগুলি মোট 1 টি যোগ করে।
এখানে একটি সাধারণ জাভা পদ্ধতি যা ডেম্পস্টারের নিয়ম অনুসারে দুটি অ্যারে সংযুক্ত করে:
public static double[] combine(double[] a, double[] b) {
double[] res = new double[a.length];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
res[i & j] += a[i] * b[j];
}
}
for (int i = 1; i < res.length; i++) {
res[i] /= 1 - res[0];
}
res[0] = 0;
return res;
}
এটি বাস্তবে কীভাবে কাজ করে তা দেখতে উপরের ট্র্যাফিক লাইট সেন্সরগুলি বিবেচনা করুন, যা জনগণকে স্বাধীনভাবে দেয় [0, 0, 0, 0.8, 0, 0, 0, 0.2]এবং [0, 0.3, 0, 0, 0, 0, 0.7, 0]। ডেম্পস্টারের নিয়ম সম্পাদন করার পরে, ফলাফলের যৌথ ভর হয় [0, 0.3, 0.56, 0, 0, 0, 0.14, 0]। বেশিরভাগ ভরকে "হলুদ" বরাদ্দ করা হয়েছে, যা স্বজ্ঞাত জ্ঞান দেয় যে এই দুটি সেন্সর যথাক্রমে "সবুজ নয়" এবং "লাল নয়" ফেরত দিয়েছে। অন্যান্য দুটি ভর ("লাল" এর জন্য 0.3 এবং "সবুজ বা হলুদ" এর জন্য 0.14) পরিমাপের অনিশ্চয়তার কারণে ty
চ্যালেঞ্জ
এমন একটি প্রোগ্রাম লিখুন যা আসল সংখ্যার দুটি তালিকা নেয় এবং দুটি ইনপুট তালিকায় ডেম্পস্টারের নিয়ম প্রয়োগের ফলাফলকে আউটপুট করে। দুটি ইনপুট তালিকার দৈর্ঘ্য সমান হবে এবং সেই দৈর্ঘ্যটি 2 এর শক্তি হবে এবং কমপক্ষে 4 হবে each 1 পর্যন্ত।
আউটপুট ইনপুট তালিকার সমান দৈর্ঘ্যের একটি তালিকা হওয়া উচিত। আপনি ধরে নিতে পারেন যে একটি সমাধান বিদ্যমান (যখন প্রমাণ এবং এইভাবে কে = 1 এর মধ্যে সম্পূর্ণ বিরোধ রয়েছে তখন কোনও সমাধানের অস্তিত্ব পাওয়া সম্ভব)। নির্ভুলতার উপরে ন্যূনতম প্রয়োজনীয়তা স্থাপনের জন্য, আপনার প্রোগ্রামটি অবশ্যই চার দশমিক স্থানে গোল করার সময় অবশ্যই সঠিক ফলাফলগুলি দিতে সক্ষম হবে।
উদাহরণ I / O
in:
[0, 0, 0, 0.8, 0, 0, 0, 0.2]
[0, 0.3, 0, 0, 0, 0, 0.7, 0]
out:
[0.0, 0.3, 0.56, 0.0, 0.0, 0.0, 0.14, 0.0]
in:
[0.0, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.4]
[0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.4]
out:
[0.0, 0.2889, 0.0889, 0.1556, 0.0889, 0.1556, 0.0444, 0.1778]
in:
[0.0, 0.0, 0.5, 0.5]
[0.0, 0.7, 0.1, 0.2]
out:
[0.0, 0.53846, 0.30769, 0.15385]
in:
[0.0, 0.055, 0.042, 0.098, 0.0, 0.152, 0.0, 0.038, 0.031, 0.13, 0.027, 0.172, 0.016, 0.114, 0.058, 0.067]
[0.0, 0.125, 0.013, 0.001, 0.012, 0.004, 0.161, 0.037, 0.009, 0.15, 0.016, 0.047, 0.096, 0.016, 0.227, 0.086]
out: (doesn't have to be this precise)
[0.0, 0.20448589713416732, 0.11767361551134202, 0.028496524069011694, 0.11809792349331062, 0.0310457664246791, 0.041882026540181416, 0.008093533320057205, 0.12095719354780314, 0.11306959103499466, 0.06412594818690368, 0.02944697394862137, 0.06398564368086611, 0.014369896989336852, 0.03774983253978312, 0.006519633578941643]
in:
[0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.0, 0.1, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.1, 0.0, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0]
[0.0, 0.0, 0.1, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.1, 0.0, 0.0, 0.1, 0.0, 0.1, 0.0]
out:
[0.0, 0.09090909090909094, 0.23376623376623382, 0.0, 0.07792207792207795, 0.025974025974026, 0.03896103896103895, 0.0, 0.10389610389610393, 0.05194805194805199, 0.02597402597402597, 0.0, 0.012987012987012984, 0.012987012987012993, 0.012987012987012984, 0.0, 0.09090909090909094, 0.038961038961038995, 0.06493506493506492, 0.0, 0.07792207792207796, 0.0, 0.0, 0.0, 0.012987012987012984, 0.012987012987013, 0.012987012987012984, 0.0, 0.0, 0.0, 0.0, 0.0]




