@Vqv এই থ্রেডটিতে পোস্ট করা চমৎকার কাজের বিষয়ে এটি একটি (দীর্ঘ!) মন্তব্য। এটির একটি সুনির্দিষ্ট উত্তর পাওয়ার লক্ষ্য। তিনি অভিধানকে সহজ করার কঠোর পরিশ্রম করেছেন। যা থেকে যায় তা পুরোপুরি কাজে লাগানো। তার ফলাফলগুলি বোঝায় যে একটি হিংস্র শক্তি সমাধান সম্ভব । সর্বোপরি, একটি ওয়াইল্ডকার্ড সহ, সর্বাধিক শব্দ characters টি অক্ষর দিয়ে তৈরি করতে পারে এবং এগুলির মধ্যে 1/10000 -রও কম লাগে - বলে, প্রায় মিলিয়ন - কিছু বৈধ অন্তর্ভুক্ত করতে ব্যর্থ হবে শব্দ। 277=10,460,353,203
প্রথম পদক্ষেপটি একটি ওয়াইল্ডকার্ড চরিত্রের সাথে ন্যূনতম অভিধান বৃদ্ধি করা, "?"। 22 টি বর্ণ দুটি-অক্ষরের শব্দের সাথে উপস্থিত হয় (সমস্ত সি, কিউ, ভি, জেড ছাড়া) ২২ টি বর্ণগুলিতে একটি ওয়াইল্ডকার্ড যুক্ত করুন এবং অভিধানে এগুলি যুক্ত করুন: {a, b ?, d ?, ..., y? Now এখন রয়েছে। একইভাবে আমরা ন্যূনতম তিন-অক্ষরের শব্দগুলিও পরিদর্শন করতে পারি, যার ফলে কিছু অতিরিক্ত শব্দ যুক্ত হয় অভিধানে প্রদর্শিত। অবশেষে, আমরা "??" যুক্ত করব অভিধানে ফলস্বরূপ পুনরাবৃত্তিগুলি সরানোর পরে, এতে 342 ন্যূনতম শব্দ রয়েছে।
এগিয়ে যাওয়ার একটি দুর্দান্ত উপায় - এটি যা খুব স্বল্প পরিমাণে এনকোডিং ব্যবহার করে - এটি একটি বীজগণিত হিসাবে দেখা । অক্ষরগুলির একটি সীমানাবিহীন সেট হিসাবে বিবেচিত একটি শব্দটি কেবল একটি মনোমালিন্য। উদাহরণস্বরূপ, "স্প্যাটস" হল একচেটিয়া । অভিধানটি তাই মনোমালিন্যের একটি সংগ্রহ। এটা দেখতে অনেকটাaps2t
{a2,ab,ad,...,ozψ,wxψ,ψ2}
(যেখানে, বিভ্রান্তি এড়ানোর জন্য, আমি ওয়াইল্ডকার্ড চরিত্রের জন্য লিখেছি )।ψ
একটি রাকের মধ্যে একটি বৈধ শব্দ থাকে এবং কেবল যদি সেই শব্দটি র্যাকটিকে ভাগ করে দেয়।
আরও বিমূর্ত, তবে অত্যন্ত শক্তিশালী, এটি বলার উপায় হ'ল বহুবর্ষীয় রিং একটি আদর্শ উত্পন্ন করে এবং বৈধ সহ র্যাকগুলি শব্দগুলি ভাগফলের রিং আইতে শূন্য হয়ে যায় , অন্যদিকে বৈধ শব্দ ছাড়া র্যাকগুলি ভাগফলে অঞ্জুর হয়। আমরা যদি সমস্ত র্যাকের যোগফল গঠন করি এবং এই ভাগফলের রিংয়ে এটি গণনা করি, তবে শব্দ ছাড়াই র্যাকের সংখ্যাটি ভাগফলে পৃথক মনোমাল্যের সংখ্যার সমান হয়।আর = জেড [ এ , বি , ... , জেড , ψ ] আর / আই আরIR=Z[a,b,…,z,ψ]R/IR
তদ্ব্যতীত, মধ্যে সমস্ত র্যাকের যোগফল প্রকাশ করা সহজ। যাক বর্ণমালায় সব বর্ণের সমষ্টি হও। প্রতিটি র্যাকের জন্য একটি করে মনোমিয়াল থাকে। (একটি অতিরিক্ত বোনাস হিসাবে, এর সহগগুলি প্রতিটি র্যাকটি কীভাবে গঠন করা যায় তার সংখ্যা গণনা করে, যদি আমাদের পছন্দ হয় তবে এটির সম্ভাবনাগুলি গণনা করার অনুমতি দেয়))α = একটি + + খ + + ⋯ + + z- র + + ψ α 7Rα=a+b+⋯+z+ψα7
একটি সাধারণ উদাহরণ হিসাবে (এটি কীভাবে কাজ করে তা দেখতে) ধরুন, (ক) আমরা ওয়াইল্ডকার্ড ব্যবহার করি না এবং (খ) "এ" থেকে "এক্স" এর মাধ্যমে সমস্ত অক্ষর শব্দ হিসাবে বিবেচিত হয়। তারপরে কেবলমাত্র সম্ভাব্য র্যাকগুলি যা থেকে শব্দগুলি তৈরি করা যায় না তা অবশ্যই সম্পূর্ণরূপে y এবং z এর সমন্বিত। আমরা গণনা করি mod মডুলো time একবারে এক ধাপে উত্পন্ন আদর্শ : { a , b , c , … , x }α=(a+b+c+⋯+x+y+z)7{a,b,c,…,x}
α0α1α2⋯α7=1=a+b+c+⋯+x+y+z≡y+zmodI≡(y+z)(a+b+⋯+y+z)≡(y+z)2modI≡(y+z)6(a+b+⋯+y+z)≡(y+z)7modI.
আমরা চূড়ান্ত উত্তর থেকে একটি শব্দহীন রাক পাওয়ার সুযোগটি পড়তে পারি, : প্রতিটি সহগ তার সাথে সম্পর্কিত র্যাকটি কীভাবে আঁকতে পারে সেগুলি গণনা করে। উদাহরণস্বরূপ, 2 ys এবং 5 z এর আঁকার 21 টি উপায় (সম্ভাব্য 26 ^ 7 এর মধ্যে) রয়েছে কারণ এর সহগ 21 এর সমান হয়।y7+7y6z+21y5z2+35y4z3+35y3z4+21y2z5+7yz6+z7y2z5
প্রাথমিক গণনা থেকে এটি সুস্পষ্ট যে এটি সঠিক উত্তর। পুরো বিষয়টি হ'ল অভিধানের বিষয়বস্তু নির্বিশেষে এই পদ্ধতিটি কাজ করে।
লক্ষ্য করুন যে প্রতিটি পর্যায়ে পাওয়ার মডুলোর আদর্শ কীভাবে হ্রাস করা যায় তা গণনা হ্রাস করে: এটিই এই পদ্ধতির মাধ্যমে প্রকাশিত শর্টকাট। (উদাহরণের শেষে।)
বহুপদী বীজগণিত সিস্টেমগুলি এই গণনাগুলি প্রয়োগ করে । উদাহরণস্বরূপ, এখানে গাণিতিক কোড:
alphabet = a + b + c + d + e + f + g + h + i + j + k + l + m + n + o +
p + q + r + s + t + u + v + w + x + y + z + \[Psi];
dictionary = {a^2, a b, a d, a e, ..., w z \[Psi], \[Psi]^2};
next[pp_] := PolynomialMod[pp alphabet, dictionary];
nonwords = Nest[next, 1, 7];
Length[nonwords]
(অভিধানটি @ vqv এর min.dict থেকে সোজা পদ্ধতিতে তৈরি করা যেতে পারে; আমি এখানে একটি লাইন রেখে দেখিয়েছি যে এটি যদি আপনার পছন্দ হয় তবে সরাসরি উল্লেখ করা যথেষ্ট সংক্ষিপ্ত।)
আউটপুট - যা গণনার দশ মিনিট সময় লাগে - 577958. আছে ( বিশেষ দ্রষ্টব্য এই বার্তার একটি পূর্ববর্তী সংস্করণ আমি একটি ক্ষুদ্র ভুল অভিধান প্রস্তুত করেছিল এবং 577940. প্রাপ্ত আমি প্রতিফলিত আমি যা আশা করি এখন টেক্সট সম্পাদনা করার পরে সঠিক ফলাফল!) মিলিয়ন বা তাই আমি প্রত্যাশার চেয়ে কিছুটা কম, তবে একই ক্রমের পরিমাণ।
এই জাতীয় রেক পাওয়ার সম্ভাবনা গণনা করার জন্য, আমাদের র্যাকটি কীভাবে আঁকতে পারে তার জন্য অ্যাকাউন্ট করতে হবে। যেমন আমরা উদাহরণে দেখেছি, এটি co এর সহগের সমান । এই জাতীয় কিছু রাক আঁকার সুযোগ হ'ল এই সমস্ত সহগের যোগফল, সহজেই সমস্ত অক্ষর 1 এর সমান সেট করে পাওয়া যায়:α7
nonwords /. (# -> 1) & /@ (List @@ alphabet)
উত্তরটি 1066056120 এর সমান, একটি র্যাক আঁকার জন্য 10.1914% সুযোগ দেয় যা থেকে কোনও বৈধ শব্দ তৈরি করা যায় না (যদি সমস্ত অক্ষর সমানভাবে সম্ভাবনা থাকে)।
যখন অক্ষরের সম্ভাবনাগুলি পৃথক হয়, কেবল প্রতিটি অক্ষর আঁকার সম্ভাবনার সাথে এটি প্রতিস্থাপন করুন:
tiles = {9, 2, 2, 4, 12, 2, 3, 2, 9, 1, 1, 4, 2, 6, 8, 2, 1, 6, 4, 6,
4, 2, 2, 1, 2, 1, 2};
chances = tiles / (Plus @@ tiles);
nonwords /. (Transpose[{List @@ alphabet, chances}] /. {a_, b_} -> a -> b)
আউটপুটটি 1.079877553303%, সঠিক উত্তর ( পরিবর্তনের সাথে অঙ্কন করে আনুমানিক মডেল ব্যবহার করে ) using পিছনে ফিরে তাকালে, তথ্য প্রবেশের জন্য চারটি লাইন লেগেছিল (বর্ণমালা, অভিধান এবং বর্ণমালা ফ্রিকোয়েন্সি) এবং কাজটি করার জন্য কেবল তিনটি লাইন: মডুলো পরবর্তী শক্তি কীভাবে গ্রহণ করতে হবে তা বর্ণনা করুন , 7th ম শক্তিটি পুনরাবৃত্তভাবে গ্রহণ করুন এবং বিকল্প হিসাবে স্থান পাবেন অক্ষরের সম্ভাবনা।αI