কিলোবাইট ব্লক এবং পয়েন্টারগুলির সমস্ত সম্ভাব্য অনুমতিগুলির একটি স্মৃতি কি সম্ভব?


23

এটি আমার মাথাটি চারপাশে জড়িয়ে দেওয়ার পক্ষে শক্ত ধারণা এবং আমি যে কোনও সম্পাদনা / সহায়তা জানার জন্য তাদের জানার পক্ষে আরও প্রশংসিত করব।

তাত্ত্বিকভাবে এমন কোনও হার্ড ড্রাইভ থাকা সম্ভব যা তার উপর এক কিলোবাইটের প্রতিটি সম্ভাব্য বাইনারি অনুক্রমের একটি অনুলিপি সংরক্ষণ করে এবং তারপরে সিস্টেমের বাকী অংশগুলিতে কেবল এই অবস্থানগুলিতে পয়েন্টার তৈরি করা যায়?

কোনও সিস্টেমে কীভাবে সরাসরি তথ্য সঞ্চিত রাখার চেয়ে দ্রুততর উপায় হতে পারে?

অন্য উপায় ব্যাখ্যা করতে বাক্যগুলির পরিবর্তে বলুন:

"হ্যালো, আমি বব।" এবং "স্যান্ডউইচটি দেখতে সুস্বাদু দেখাচ্ছে" "

... হার্ড ড্রাইভে সঞ্চিত, আমাদের বর্ণমালা এবং অন্যান্য অক্ষরগুলির কিছু সংখ্যক (বলতে গেলে 1000 অক্ষর বা তাই) সমস্ত ক্রিয়াকলাপ থাকবে এবং তারপরে আমাদের বাক্যগুলিকে কিছু সংরক্ষণ করবে:

[পয়েন্টার # 21381723]


21
আপনি বিবেচনা করতে পারেন যে কতগুলি অনন্য ইংলিশ টুইট সম্ভব? বিশ্বের জনসংখ্যার এই সমস্ত উচ্চস্বরে পড়তে কত সময় লাগবে? । আপনি খুব বড় সংখ্যার সাথে ডিল করছেন।

গিটটি কীভাবে কাজ করে, কন্টেন্টকে ঠিকানাযোগ্য বলে এটি কীভাবে কাজ করে তা আপনার আকর্ষণীয় মনে হতে পারে ।
জেডুগোস্জ

5
github.com/philipl/pifs আপনার ধারণার মতো একই অধ্যক্ষের উপর ভিত্তি করে তৈরি, কোনও কেবি এর সমস্ত অনুমতি ছাড়াই , এটি পাই ব্যবহার করে।
ওয়াক্সেন

12
আপনার পয়েন্টারগুলি 1 কিলোবাইট দীর্ঘ হতে হবে। আপনি যে ব্লকগুলি ইংরেজিতে বোঝায় না সেগুলি সংরক্ষণ না করা চয়ন করতে পারেন - এই ক্ষেত্রে আপনি সংকোচনের ধারণাটি স্বাধীনভাবে পুনর্বহাল করেছেন!
ব্যবহারকারী 253751

বুনিয়াদি উত্তরটি হ'ল না - এটি ক্রমের সংখ্যা এবং আকারের কারণে অসম্ভব তবে আপনি কী সম্ভাব্য অ্যাপ্লিকেশনটি ভাবছিলেন যে এটি যদি সম্ভব হয় তবে এটি কার্যকর হবে ??
মুদ্রাচরিত

উত্তর:


91

সম্ভাব্য বিভিন্ন 1K ব্লক 2 8192 রয়েছে । এগুলি সব সংরক্ষণ করতে 8202 বিট স্টোরেজ লাগবে । যেহেতু মহাবিশ্বে কেবলমাত্র প্রায় 80% (বা 26 ২ 266 ) কণা রয়েছে, এটি একটি নিরাপদ বাজি যে এগুলি সমস্ত সংরক্ষণ করা সম্ভব নয় এবং এটি সময় সাশ্রয় করবে কি না সে সম্পর্কে আপনাকে ভাবতে হবে না।

তবে প্রকৃতপক্ষে এর উত্তর দেওয়ার আরও একটি আকর্ষণীয় উপায় রয়েছে। আপনি ধ্রুবকের বিশাল পুলে একটি সূচি তৈরির পরামর্শ দিচ্ছেন। কিন্তু আপনি কীভাবে জানবেন কোন সূচকে অবচয়? একটি আর্গুমেন্ট অনুরোধে জন্য কল্পনা করুন যে আপনার সঞ্চয় করতে চান শুধুমাত্র 1-অক্ষর ব্লক: a, b, c... সম্ভবত আপনার সূচকের হবে 0, 1, 2 ইত্যাদি, যেহেতু ঐ ব্লক জমা করার সবচেয়ে বেশি কার্যকরী বিন্যাস আছে।

আপনি ব্যবস্থা সম্পর্কে কিছু লক্ষ্য করেন? আপনার সূচকটি প্রকৃতপক্ষে সঞ্চিত ডেটার একটি কোডেড উপস্থাপনা ! অন্য কথায়, আপনার মোটেও অবলম্বন করতে হবে না, আপনাকে কেবল সূচিটি আপনার পছন্দসই ডেটাতে রূপান্তর করতে হবে।

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


17
সুতরাং, একটি উপায়ে, আমরা ইতিমধ্যে এই সিস্টেমটি ব্যবহার করছি - তবে আমরা এটি কিলোবাইট-আকারের বিট নিদর্শনগুলির অলস মূল্যায়নের সাথে করছি, যা আমাদের প্রচুর পরিমাণে সঞ্চয় স্থান সঞ্চয় করতে দেয় !
থিওডোরোস চ্যাটজিগিয়ানানাকিস

3
ওভারল্যাপের কারণে স্টোরেজটি কিছুটা হ্রাস পেয়েছে (1024 জিরো অনুসারে 1024 টিতে 1025 অনন্য নিদর্শন রয়েছে) ... হ্রাস পেয়েছে তবে এখনও অসম্ভব বড়। এছাড়াও, একটি 1 কেবি ব্লক 2 <sup> 13 </sup> বিট, 2 <sup> 10 </sup> নয়।
বেন ভয়েগট

2
মনে রাখবেন যে মহাবিশ্বের কণায় 10 ^ 80 সীমাটির সরাসরি অর্থ এই নয় যে আপনি মহাবিশ্বে 10 ^ 80 বিট বেশি সংরক্ষণ করতে পারবেন না - কারণ প্রতিটি কণার সাহায্যে আপনি সম্ভাব্যভাবে এক বিটেরও বেশি তথ্য সংরক্ষণ করতে পারেন ( মহাবিশ্বের মধ্যে এর অবস্থানের ভিত্তিতে এবং সম্ভবত এর বেগ ইত্যাদি)) এর অর্থ এই নয় যে আপনি প্রতিটি 1 কে ব্লকটি সংরক্ষণ করতে পারবেন - বিস্ময়করভাবে একটি বৃহত ফ্যাক্টর দ্বারা কণার সংখ্যা অতিক্রম করে তাদের সংখ্যা, সুতরাং এটি এখনও খুব নিরাপদ বাজি আপনি সেগুলি সব সঞ্চয় করতে পারবেন না!
স্মৃতি

2
@ নীল আপনার যদি একটি কোডিং সিস্টেম থাকে যা আপনাকে "10 ^ 80" হিসাবে এনকোড করে 10 ^ 80 সঞ্চয় করতে দেয় তবে আপনি "10 ^ 80" কীভাবে সংরক্ষণ করবেন? যদি ডেটার কিছু টুকরা প্রকৃত ডেটার চেয়ে কম এনকোড করা থাকে তবে অন্যদের আরও দীর্ঘতর এনকোড করতে হয়। অথবা যদি আপনার সমস্ত ডেটা টুকরো টুকরো হয় তবে আপনি প্রতিটি দশমিক অঙ্ক একটি সম্পূর্ণ বাইট হিসাবে সংরক্ষণ করছেন।
র্যান্ডম 832

3
সঙ্গে ডি Bruijn সিকোয়েন্স 2 ^ 1024 বিটের যথেষ্ট হবে।
gronostaj

20

যেমন অন্যরা ইতিমধ্যে চিহ্নিত করেছে, আপনার কাছে 1 কে ব্লকের জন্য 2 ^ 8192 সম্ভাবনা রয়েছে। এর অর্থ যদি কোনও ব্লকের ঠিকানা একই পরিমাণে বিটের সাথে এনকোড করা থাকে তবে আপনার ঠিকানাগুলি 1k দীর্ঘ হবে the আপনি ইন্ডিয়ারেশনের একটি স্তর যুক্ত করা ছাড়া আর কিছু অর্জন করতে পারবেন না যাতে আপনি কোনও কার্যকারিতা অর্জন করতে পারেন না।

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


1

এটি নিয়ে দুটি সমস্যা আছে।

প্রথমত, "এক কিলোবাইটের সমস্ত সম্ভাব্য বাইনারি ক্রম" একটি বিশাল পরিমাণে ডেটা। 1024 বাইট * 8 বিট প্রতি বাইট = 8192 বিট একটি কিলোবাইটে সমস্ত সম্ভাব্য আদেশ 2 2 8192 হবে। এটাই প্রায় 1.09e+2466কিলোবাইট! (তুলনার উদ্দেশ্যে, 1 টিবি ড্রাইভ হ'ল 1e09কিলোবাইট)

দ্বিতীয়ত, আপনার কাছে যদি এমন বিশাল টেবিল থাকে এবং আপনি এটিতে পয়েন্টার দিয়ে সূচি রেখেছিলেন, আপনি যদি 1 কেবি এর চেয়ে ছোট কিছু তথ্য রেফারেন্স করতে চান তবে আপনি কী করবেন?


2
অতিরিক্ত 1 কেবি এর চেয়ে ছোট সমস্ত ব্লক সংরক্ষণ করা তত বেশি স্থান গ্রহণ করবে না। কেবলমাত্র বাইট-আকারের ব্লকগুলি ধরে নিলে, ছোট ব্লকের একসাথে 1-কেবি-ব্লকগুলির আকারের 1/256 এরও বেশি। বিট-আকারের ব্লক ধরে নেওয়া, আপনি আবার একই আকার যুক্ত করুন।
পাওলো ইবারম্যান

-1

অন্য পোস্টারগুলি যেমন উল্লেখ করেছে যে কোনও সময়ে, আপনার সম্ভাব্য সমস্ত মানগুলির তালিকাতে সূচক করার জন্য প্রয়োজনীয় পয়েন্টারের আকার আপনার লাভকে বাতিল করে দেয়।

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


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