روی جای حساسی دست گذاشتی. اگه راهش پیدا بشه (راه علمی و عملی) نه تنها توی دنیای آی تی ، کلا توی صنایع بزرگ و علوم مختلف از قبیل شیمی ، فیزیک ، ریاضی ، نجوم و خیلی چیزها که تصورش رو هم نمیکنی یه تحول بنیادی و عظیم ایجاد میشه.:blink:
من برنامه نویس هستم و الان چند ساله که روی موضوع فکر می کنم و موفق نمیشم. از هر راهی که رفتم برگشتم سر جای اول.
بزار یکم واضح تر بگم : شما میخواهبد از یک پیکسل اطلاعات 4 پیکسل رو استخراج کنید. من هم میخواهم از دل 8 بیت اطلاعات 16 بیت یعنی 2 بایت رو استخراج کنم. هر دو به یک منبع منتهی میشوند. در سیستم نقشه بیتی یک پیکسل از 3 بایت برای نگهداری اطلاعات RGB یعنی رنگهای قرمز سبز و آبی استفاده میکنه. حالا شما باید با یک الگوریتم از این سه بایت اطلاعات 12 بایت رو بوجود بیارید. این باید درست و بدون اشتباه باشه و گرنه تصویر شما شکل نمیگیره. برای رسیدن به منطق درست باید از یک مسئله ساده کمک بگیریم: مثلا ما یک تصویر با 4 پیکسل با 4 رنگ داریم. حالا اون رو با فتوشاپ کوچیک می کنیم. اگه در دو جهت طول و عرض نصف بشه نتیجه 1 پیکسل میشه.
ما این تصویر رو به کامپیوتر دیگه ای منتقل می کنیم. و میخواهیم از این یک پیکسل اطلاعات 4 پیکسل اولی رو به دست بیاریم. این همونجاییه که نه تنها من بلکه همه دانشمندان دنیا روش گیر کرده اند.
مثلا در ریاضی دانشمندان دنبال راهی هستند که بتونند اعداد خرده دار رو کوچیک کنند. باید بدونید که نمیشه اعداد خرده دار رو کوچیک کرد مثلا (836238903225405). اگه کسی تونست این عدد رو کوچیک کنه طوری که تعداد رقمهاش کمتر بشه و بعد از روی همین رقمهای کم ، عدد اولی بدست بیاد ، اونوقت میشه تصاویر رو بیش از هزاران برابر کوچک و سبک کرد و سیو کرد و هر جا که میخواهی ببری و بعد بدون هیچ ایرادی به سایز اولش برگردونی(یعنی هزاران برابر بزرگش کنی).
مشکل کجاست؟ :
مشکل اینجاست که از راهی برید وقتی اون عدد کوچیک میشه و یا اون پیکسل کم میشه، اطلاعات گلچین میشه و باقی اطلاعات از بین میره. برای همین نمیشه اطلاعات رو بازیافت کرد.
هیچ هوشی هم نمیتونه اون رو بسازه حتی هوش انسان.
من نمیگم که غیر ممکنه. چون همچنان ته دلم یه چیزی میگه که میشه.
اگه بشه پرده از خیلی اسرار جهان گشوده میشه. مثلا همین معمای سیاه چاله های فضایی.:wacko:
به نظر من نمایش یک عدد بزرگ با تعداد ارقام کمتر غیر ممکنه .
دلیل :
فرض کنید میخوایم یه عدد n رقمی رو بوسیله ی n-m رقم که m>=1 نمایش بدیم .
قبل از این کار باید این رو بدونیم که میخوایم الگوریتممون کلیت داشته باشه و تموم عددهای n رقمی رو کوچیک کنه . خوب همونطور که میدونید با n رقم میشه
عدد n رقمی رو داشت . خوب الگوریتم ما باید برای
عدد صادق باشه . اسم این
عدد رو میذاریم Original data
خوب فرض میکنیم الگوریتمی برای اینکار ساختیم و همه ی این عددهای original رو کم رقم کردیم (به عیارت دیگه فشرده سازی). خوب حالا ما لیستی از عددهای فشرده شده داریم که اسمشون رو میذاریم compressed data
خوب حالا ما
تا عدد compressed داریم( که خوب واضحه دیگه )که میخواهیم Original data رو با کمک اونها و الگوریتمی بازسازی (Reconstruction) بکنیم .
خوب اینجاست که کم کم داریم میبینیم یه تناقض داره رخ میده .
آیا میشه
عدد (compressed ) داشته باشیم که همه ی اونها با هم متفاوت باشند (باید متفاوت باشند تا عددهای مشابه ازشون استنتاج نشه) در حالیکه تعداد رقمهاشون m تا از n کمتر باشه ؟. ما با محدودیت n-m رقمی ای که توی هر کدوم از اعداد compressed باید قایل بشیم فقط میتونیم
عدد بسازیم . حالا چطور شد که
عدد(متمایز) ساخته شده ؟؟ و میبینیم که عدد
از عدد
کوچکتره . پس به تناقض میرسیم .
شاید بگید خوب دلیلی نداره که توی تموم اعداد compressed شده m ثابت باشه . خوب برای اون حالت هم میتونم ثابت کنم که مشابه اینه تقریبا . که واضح هم هست طریقه ی اثباتش .
به هر حال با این مطالب این موضوع رو میخوام بگم که این نوع فشرده سازی که بشه اطلاعات فشرده شده رو دقیقا از اطلاعات قبلی استخراج کنیم (که توی علم کامپیوتر lossless compression نام داره ) فقط برای مواقع خاصی میشه پیاده سازیش کرد . مثلا فرض کنید احتمال وقوع عددهای زوج توی نمونه های بالا 2 برابر احتمال وقوع عددهای فرد باشه . در این شرایط خواص میشه الگوریتمی با خصوصیت lossless نوشت . و یا اینکه فشرده سازیمون مبتنی بر یک کلیت نباشه والگوریتم با توجه به داده های ثبت شده به صورت هوشمندانه به یک سری نظم های موجود توی داده ها پی ببره. که بحثش مفصله
در مقابل الگوریتم lossless الگوریتم lossy قرار داره که برای فشرده سازیه تصاویر و فیلم بیشتر رواج داره و فرقش با lossless اینه که اطلاعات بازسازی شده ی ما دقیقا مثل اطلاعات اولیه نیست و افت داره . مثلا کیفیت تصویر رو به قیمت کم شدن اندکی کیفیت میتونیم بپذیریم .
و...