چگونگی فعالیت برنامه های فشرده ساز!


#1

سلام و خسته نباشید من میخواستم بدونم که برنامه هایی مثل WinRar و غیره چطوری فشرده سازی رو انجام میدن؟
یعنی اینکه از چه متدی استفاده میکنن؟
از چه زبون برنامه نویسی برای نوشتن استفاده کردن؟


#2



#3

مرسی ممنون از جواب اما این جواب رو درست نفهمیدم که چطوری عملیات فشرده سازی انجام میشه؟
منبع فارسی دارید معرفی کنید؟
یا اینکه یه سورس کدی که مثلا" 10 مگ رو بکنه 9 مگ تحویل بده؟ زبان برنامه نویسیشم مهم نیست


#4

زبان برنامه نویسی مهم نیست، نرمافزار های بایگانی و فشرده سازی مثل 7zip, winrar و غیره از روشی به نام lossless compression یا فشرده سازی بدون از دست دادن دیتا استفاده میکنند، در این روش اطلاعات اضافی یا تکراری با استفاده از الگریتم های مخصوص فشرده سازی جوری ذخیره میشوند که اطلاعات لازم برای تبدیل دیتا به حالت غیر فشرده وجود داشته باشد.
در یک مثال ساده فکر کنید در یک فایل متنی تعداد زیادی فضای خالی وجود داره، به راحتی با درست کردن مدلی که اطلاعات لازم برای بازنویسی اون فضاها رو در جایی ذخیره کنه میتونیم عمل فشرده سازی و بازیافت بدون از دست دادن دیتا رو انجام بدیم. البته موضوع فقط فضای خالی نیست، هر جایی که دیتای تکراری وجود داشته باشه میتونیم بجای اصل دیتا الگوی برگشت پذیر اون دیتا رو ذخیره کنیم.

مثال زیر شاید خیلی سطحی باشه اما به درک موضوع کمک میکنه؛
برای نمونه در عبارت زیر از هر کرکتر ۵ تا به ترتیب چاپ شده

AAAAAzzzzzxxxxxqqqqqSSSSScccccgggggEEEEEppppp

من اگر بخوام اینو جوری تو حافظه خودم به صورت فشرده ذخیره کنم که بعد بدون هیچ اتلاف داده ای بتونم دوباره بنویسمش! به این صورت عمل میکنم؛

A5z5x5q5S5c5g5E5p5

در یک فشرده سازی عمیقتر اگر مدل بالا تکرار شد میتونم بجای تکرار, خود مدل رو هم فشرده کنم.

الگریتم های فشرده سازی خیلی هوشمندانه تر از من عمل میکنند :wink::hugs: