نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

روش ابزار فشرده سازی داده ها فشرده سازی بدون از دست دادن اطلاعات

متراکم سازی داده ها(متراکم سازی داده ها) - تکنیک فنیکاهش حجم (اندازه) داده های ضبط شده در رسانه آنها (دیسک مغناطیسی سخت، فلاپی دیسک، نوار مغناطیسی). با روش های مختلف، عمدتاً با استفاده از کدگذاری (تکرار کلمات، عبارات، نمادها) اجرا می شود. دو گروه از حالت های فشرده سازی داده ها وجود دارد: استاتیک و پویا. همچنین بین فشرده سازی فیزیکی و منطقی تمایز قائل شده است. فشرده سازی متقارن و نامتقارن؛ کدگذاری تطبیقی، نیمه تطبیقی ​​و غیر تطبیقی؛ فشرده سازی بدون تلفات، اتلاف و به حداقل رساندن تلفات. روش ها (انواع) فشرده سازی داده ها:

فشرده سازی استاتیک داده ها - برای ذخیره سازی و بایگانی طولانی مدت استفاده می شود. با استفاده از برنامه های ابزار ویژه بایگانی، به عنوان مثال ARJ، PKZIP/PKUNZIP انجام می شود. پس از بازیابی (فشرده سازی)، ضبط اصلی بازیابی می شود.
فشرده سازی پویا (فشرده سازی در زمان واقعی، فشرده سازی پویا، فشرده سازی در زمان واقعی) - طراحی شده برای کاهش فضای اشغال شده حافظه دیسک توسط داده هایی که به دسترسی آنلاین و خروجی نیاز دارند. دستگاه های خارجیکامپیوتر (از جمله روی صفحه نمایشگر). فشرده سازی و بازیابی دینامیک داده ها به صورت خودکار و "فوری" با استفاده از نرم افزار ویژه انجام می شود.
فشرده سازی فیزیکی یک روش فشرده سازی است که در آن داده ها به شکل فشرده تر «به طور رسمی» بازسازی می شوند، یعنی بدون در نظر گرفتن ماهیت اطلاعات موجود در آن.
فشرده سازی منطقی روشی است که در آن مجموعه ای از کاراکترهای الفبایی، عددی یا باینری با دیگری جایگزین می شود. در عین حال، معنای معنایی داده های اصلی حفظ می شود. به عنوان مثال می توان یک عبارت را با مخفف آن جایگزین کرد. فشرده سازی منطقی روی یک کاراکتر یا بیشتر انجام می شود سطح بالاو صرفا بر اساس محتوای داده های اصلی است. فشرده سازی منطقی برای تصاویر اعمال نمی شود.
فشرده‌سازی متقارن یک روش فشرده‌سازی است که بر اساس آن اصول ساخت الگوریتم‌هایی برای بسته‌بندی و باز کردن داده‌ها به یکدیگر نزدیک یا نزدیک هستند. هنگام استفاده از فشرده سازی متقارن، زمان صرف شده برای فشرده سازی و فشرده سازی داده ها قابل مقایسه است. برنامه های تبادل داده معمولاً از فشرده سازی متقارن استفاده می کنند.
فشرده سازی نامتقارن روشی است که بر اساس آن زمان بیشتری برای انجام کار "در یک جهت" نسبت به انجام کار در جهت دیگر صرف می شود. فشرده سازی تصاویر معمولاً به زمان و منابع سیستمی بسیار بیشتری نسبت به فشرده سازی آنها نیاز دارد. اثربخشی این رویکرد با این واقعیت تعیین می شود که تصاویر را می توان فقط یک بار فشرده کرد و برای نمایش آنها - بارها - از حالت فشرده خارج کرد. الگوریتم های نامتقارن "در جهت مخالف" (فشرده سازی داده ها زمان کمتری نسبت به رفع فشار می برد) هنگام اجرا استفاده می شود. کپی رزرو کنیدداده ها.
کدگذاری تطبیقی ​​یک روش رمزگذاری برای فشرده سازی داده است که برای نوع خاصی از داده از پیش پیکربندی نشده است. برنامه هایی که از رمزگذاری تطبیقی ​​استفاده می کنند با هر نوع داده فشرده تنظیم می شوند و به حداکثر کاهش حجم آنها دست می یابند.
کدگذاری غیرتطبیقی ​​یک روش کدگذاری فشرده محور است نوع خاصییا انواع داده ها رمزگذارهای ساخته شده بر اساس این اصل حاوی فرهنگ لغت های ثابت از "زیررشته های از پیش تعریف شده" هستند که به طور مکرر در داده های در حال کدگذاری ظاهر می شوند. به عنوان مثال روش فشرده سازی هافمن است.
کدگذاری نیمه تطبیقی ​​یک روش کدگذاری فشرده سازی داده است که از عناصر کدگذاری تطبیقی ​​و غیرتطبیقی ​​استفاده می کند. اصل عملیات رمزگذاری نیمه تطبیقی ​​این است که رمزگذار دو گروه عملیات را انجام می دهد: اول، مشاهده آرایه داده های رمزگذاری شده و ساخت فرهنگ لغت برای آنها، و سپس، خود رمزگذاری.
فشرده‌سازی بدون تلفات یک روش فشرده‌سازی است که در آن یک قطعه داده‌ای که قبلاً کدگذاری شده است، پس از باز کردن بسته‌بندی کامل آن بدون ایجاد تغییرات، بازیابی می‌شود.
فشرده سازی با اتلاف روشی است که در آن برای اطمینان از حداکثر نسبت تراکم، آرایه منبعبرخی از داده‌های موجود در آن حذف می‌شوند. برای داده های متنی، عددی و جدولی، از برنامه هایی استفاده کنید که پیاده سازی می کنند روش های مشابهفشرده سازی غیر قابل قبول است با این حال، برای برنامه هایی که با گرافیک کار می کنند، این اغلب توصیه می شود. کیفیت تصویر بازیابی شده به ماهیت مواد گرافیکی و درستی الگوریتم فشرده سازی پیاده سازی شده در برنامه بستگی دارد. تعدادی الگوریتم فشرده سازی وجود دارد که سطوح قابل قبول از دست دادن تصویر گرافیکی اصلی را در استفاده های خاص از تصویر بازیابی شده آن در نظر می گیرد، به عنوان مثال، با مشاهده آن بر روی صفحه نمایشگر، چاپ آن با چاپگر، یا در چاپ. این روش ها در مجموع "فشرده سازی با حداقل تلفات" نامیده می شوند.
فشرده سازی تصویر یک تکنیک یا روش فنی برای کاهش حجم (اندازه) ضبط تصاویر گرافیکی (نقاشی، نقشه ها، نمودارها) بر روی رسانه آنها (به عنوان مثال، روی یک دیسک مغناطیسی، نوار مغناطیسی) است. اساسا "فشرده سازی تصویر" نوعی فشرده سازی پویا است. برای پیاده سازی آن از روش های مختلف رمزگذاری داده ها استفاده می شود که بر عناصر گرافیکی تشکیل دهنده تصویر از جمله اجسام متحرک متمرکز است. همچنین هنگام انتقال اطلاعات فکس از طریق کانال های ارتباطی، در سیستم های چند رسانه ای و تلفن های ویدئویی استفاده می شود.
فشرده سازی دیسک یک تکنیک فنی مبتنی بر فشرده سازی پویا در طول فرآیند نوشتن آنها بر روی دیسک و هنگام خواندن آنها است. بازیابی خودکاربه شکل اصلی خود فشرده سازی دیسک برای افزایش ظرفیت دیسک استفاده می شود. بسته به ماهیت ضبط، ظرفیت دیسک را می توان تقریباً 1.5 تا 5 برابر افزایش داد. فشرده سازی دیسک با استفاده از ویژه انجام می شود برنامه های کاربردیبه عنوان مثال DoubleSpace، Stacker، SuperStor.

روش ها و ابزارهای فشرده سازی داده ها:
روش فشرده سازی هافمن (کدگذاری CCITT) در سال 1952 توسط دیوید هافمن توسعه یافت. کمیته مشورتی بین المللی تلفن و تلگراف (CCITT) تعدادی پروتکل ارتباطی برای ارسال فکس بر اساس آن ایجاد کرده است. تصاویر سیاه و سفیداز طریق کانال های تلفن و شبکه های داده (استاندارد T.4 CCIT و T.6 CCITT که به عنوان فشرده سازی گروه 3 CCITT و فشرده سازی گروه 4 CCITT نیز شناخته می شود).
فشرده سازی فراکتال - روش فشرده سازی تصاویر شطرنجیبا تبدیل آنها به به اصطلاح فراکتال. ذخیره سازی تصاویر به شکل فراکتال به حافظه دیسک چهار برابر کمتر از پیکسل ها نیاز دارد.
ART روشی برای فشرده سازی متن، گرافیک، صدا و تصویر است. اصل عملکرد الگوریتم فشرده سازی مبتنی بر تجزیه و تحلیل تصویر و شناسایی ویژگی های کلیدی آن (رنگ، ​​نویز، لبه ها، ویژگی های تکراری) است.
AC3 Dolby یک روش فشرده سازی و فرمت است که به شما امکان می دهد تا 6 کانال داده صوتی را در یک فایل با سرعت 32 تا 640 کیلوبیت بر ثانیه فشرده، ذخیره و انتقال دهید.
DJVU (DjVu، djvu، deja vu) یک فناوری و قالب برای فشرده سازی پویا صفحات اسکن شده نشریات حاوی متن و مطالب گویا است.
DVI (Digital Video Interactive) سیستمی برای فشرده سازی پویا و بازیابی ضبط های صوتی و تصویری به صورت دیجیتال است. استفاده از آن به شما این امکان را می دهد که یک فیلم ویدئویی تمام قد را به همراه صدا در یک CD-ROM ضبط کنید.
EAD (Encoded Archival Description) یک استاندارد رمزگذاری است که توسط دفتر توسعه شبکه و استانداردهای MARC کتابخانه کنگره با همکاری انجمن آرشیوداران آمریکا در سال 1998 (به روز شده در سال 2002) توسعه یافته است. این استاندارد اصولی را برای ایجاد، توسعه و نگهداری طرح‌های کدگذاری برای کمک‌های بایگانی و یافتن کتابخانه ایجاد می‌کند.
Image Compression Manager یک برنامه مدیریت فشرده سازی تصویر پویا است که به شما امکان استفاده از آن را می دهد روش های مختلففشرده سازی/بازسازی تصویر (MPEG، JPEG).
JBIG (گروه مشترک کارشناسان تصویر دو سطحی) یک روش فشرده سازی بدون تلفات برای تصاویر دو سطحی (دو رنگ) است که توسط گروه مشترک کارشناسان تصویر دو سطحی ISO و CCIT در سال 1988 ایجاد شد. روش JBIG در سال 1993 به عنوان استانداردی برای رمزگذاری داده های دو سطحی به جای الگوریتم های فشرده سازی کمتر کارآمد MR (Modified READ) و MMR (Modified Modified READ) تایید شد.
LZW (Lempel-Ziv-Welch) یک روش فشرده سازی پویا است که بر اساس جستجوی کل فایل و ذخیره دنباله های یکسان از داده ها در یک فرهنگ لغت (که اصطلاحات نامیده می شوند) است. به هر دنباله داده منحصربفرد، توکن‌های کوتاه‌تری (کلید) اختصاص داده می‌شود.
MP3 (گروه متخصصان تصاویر متحرک، لایه 3) یک روش فشرده سازی پویا (الگوریتم) و فرمت ویژه ای برای ضبط فایل های داده های صوتی است. MP3 فشرده سازی بالایی از صداهای ضبط شده را فراهم می کند و در برنامه های چند رسانه ای، به ویژه در پخش کننده های دیجیتال (پخش کننده) و اینترنت استفاده می شود.
RLE (Run Length Encoding) روشی برای فشرده سازی پویا داده های گرافیکی، در درجه اول تصاویر، بر اساس کاهش است. اندازه فیزیکیتکرار رشته کاراکترها

ارسال کار خوب خود در پایگاه دانش ساده است. از فرم زیر استفاده کنید

کار خوببه سایت">

دانشجویان، دانشجویان تحصیلات تکمیلی، دانشمندان جوانی که از دانش پایه در تحصیل و کار خود استفاده می کنند از شما بسیار سپاسگزار خواهند بود.

ارسال شده در http://www.allbest.ru/

متراکم سازی داده ها

1. اطلاعات. انواع و خواص آن

در ادبیات می توان تعاریف بسیار زیادی از اصطلاح "اطلاعات" پیدا کرد که منعکس کننده رویکردهای مختلف برای تفسیر این مفهوم است. فرهنگ لغت توضیحی زبان روسی Ozhegov دو تعریف از کلمه "اطلاعات" ارائه می دهد:

اطلاعاتی در مورد دنیای اطراف و فرآیندهای رخ داده در آن، درک شده توسط یک شخص یا یک دستگاه خاص.

پیام هایی که در مورد وضعیت امور، وضعیت چیزی اطلاع می دهند. (اطلاعات علمی، فنی و روزنامه، رسانه - چاپ، رادیو، تلویزیون، سینما).

اطلاعات و ویژگی های آن موضوع مطالعه در تعدادی از رشته های علمی مانند نظریه اطلاعات (نظریه ریاضی سیستم های انتقال اطلاعات)، سایبرنتیک (علم ارتباط و کنترل در ماشین ها و حیوانات و همچنین در جامعه و انسان است. موجودات)، نشانه شناسی (علم نشانه ها) و سیستم های نشانه ای، نظریه ارتباطات جمعی (مطالعه رسانه ها و تأثیر آنها بر جامعه)، علوم رایانه (مطالعه فرآیندهای جمع آوری، تبدیل، ذخیره سازی، حفاظت، جستجو و انتقال انواع اطلاعات و ابزار آنها پردازش خودکار، فیزیک و ریاضیات.

اطلاعات دارای ماهیت دوگانه است: مواد - قابل انتقال، ذخیره و غیره. و نامشهود - با انتقال گوگرد می تواند دوباره پر شود. اطلاعات نمی تواند بدون حامل مادی خود، وسیله ای برای انتقال آن در فضا و زمان وجود داشته باشد. حامل می تواند خود جسم فیزیکی یا معادل انرژی آن به شکل صدا، نور، الکتریکی و سیگنال های دیگر باشد.

برای این منظور در حال حاضر روش های زیادی برای ذخیره سازی اطلاعات در رسانه های خارجی (نسبت به مغز انسان) و انتقال آن در فواصل بسیار زیاد ابداع شده است.

انواع اصلی اطلاعات با توجه به شکل ارائه آن، روش های رمزگذاری و ذخیره سازی آن، که دارد بالاترین ارزشبرای علوم کامپیوتر، این است:

· گرافیکییا تصویری - اولین نوع که برای آن روشی برای ذخیره اطلاعات در مورد دنیای اطراف در قالب نقاشی های سنگی و بعداً به صورت نقاشی، عکس، نمودار، نقاشی روی کاغذ، بوم، سنگ مرمر و سایر موادی که تصاویر را به تصویر می کشد، اجرا شد. از دنیای واقعی؛

· صدا- دنیای اطراف ما پر از صداها است و مشکل ذخیره و تکرار آنها با اختراع دستگاه های ضبط صدا در سال 1877 حل شد. نوع آن اطلاعات موسیقی است - برای این نوع یک روش کدگذاری با استفاده از کاراکترهای خاص اختراع شد که امکان ذخیره آن را به روشی مشابه فراهم می کند. اطلاعات گرافیکی;

· متن- روشی برای رمزگذاری گفتار انسان با نمادهای خاص - حروف، و ملل مختلف زبان های مختلفی دارند و از مجموعه های مختلفی از حروف برای نمایش گفتار استفاده می کنند. این روش به ویژه پس از اختراع کاغذ و چاپ اهمیت یافت.

· عددی- اندازه گیری کمی از اشیاء و خواص آنها در دنیای اطراف. با توسعه تجارت، اقتصاد و مبادلات پولی اهمیت ویژه ای پیدا کرد. به طور مشابه اطلاعات متنیبرای نمایش آن، از یک روش کدگذاری با نمادهای ویژه - اعداد استفاده می شود، و سیستم های کدگذاری (اعداد) می توانند متفاوت باشند.

· اطلاعات ویدیویی- روشی برای حفظ تصاویر "زنده" دنیای اطراف که با اختراع سینما ظاهر شد.

برای انتقال اطلاعات در فواصل طولانی، در ابتدا از سیگنال های نوری رمزگذاری شده استفاده شد، با اختراع الکتریسیته - انتقال سیگنال به روشی خاص از طریق سیم ها رمزگذاری شده و بعداً با استفاده از امواج رادیویی.

با ظهور رایانه ها (یا همانطور که در ابتدا در کشور ما به آنها گفته می شد رایانه ها - الکترونیکی ماشین های محاسباتی) ابتدا وسیله ای برای پردازش وجود داشت اطلاعات عددی. با این حال، بعدها، به ویژه پس از استفاده گسترده از رایانه های شخصی (PC)، رایانه ها برای ذخیره، پردازش، انتقال و بازیابی اطلاعات متنی، عددی، تصویری، صوتی و تصویری مورد استفاده قرار گرفتند. از زمان ظهور اولین رایانه های شخصی - رایانه های شخصی (دهه 80 قرن بیستم) - تا 80٪ از زمان کار آنها به کار با اطلاعات متنی اختصاص دارد.

ذخیره سازی اطلاعات هنگام استفاده از رایانه انجام می شود دیسک های مغناطیسییا نوارها، روی دیسک های لیزری(سی دی و دی وی دی)، دستگاه های حافظه ویژه غیر فرار (فلش مموری و ...). این روش ها به طور مداوم در حال بهبود هستند، دستگاه ها و رسانه های ذخیره سازی جدید اختراع می شوند. پردازش اطلاعات (تولید، تبدیل، انتقال، ضبط به رسانه خارجی) توسط پردازنده کامپیوتر انجام می شود. با استفاده از کامپیوتر امکان ایجاد و ذخیره سازی وجود دارد اطلاعات جدیدهر نوع، برای آنچه استفاده می شود برنامه های ویژه، در رایانه ها و دستگاه های ورودی اطلاعات استفاده می شود.

در حال حاضر نوع خاصی از اطلاعات را می توان اطلاعات ارائه شده در اینترنت جهانی دانست. از تکنیک های ویژه ای برای ذخیره، پردازش، جستجو و انتقال حجم زیادی از اطلاعات توزیع شده و روش های ویژه کار با انواع مختلفاطلاعات به طور مداوم در حال بهبود است نرم افزار، ارائه کار جمعی با اطلاعات از همه نوع.

ویژگی های اطلاعاتی

بسیاری از ویژگی های مختلف اطلاعات را می توان ذکر کرد. هر رشته علمی مواردی را که برای خود اهمیت بیشتری دارند در نظر می گیرد. از دیدگاه علوم کامپیوتر، ویژگی های زیر مهمترین به نظر می رسد:

1. عینیت و ذهنیت اطلاعات. اطلاعات عینی تر، اطلاعاتی در نظر گرفته می شود که در آن روش ها کمتر عنصر ذهنی را معرفی می کنند. در طول فرآیند اطلاعات، درجه عینیت اطلاعات همیشه کاهش می یابد.

2. کامل بودن اطلاعات. کامل بودن اطلاعات تا حد زیادی کیفیت اطلاعات را مشخص می کند و کفایت داده ها را برای تصمیم گیری یا ایجاد داده های جدید بر اساس داده های موجود تعیین می کند.

3. قابلیت اطمینان اطلاعات. داده ها زمانی به وجود می آیند که سیگنال ها ضبط می شوند، اما همه سیگنال ها "مفید" نیستند - همیشه سطحی از سیگنال های خارجی وجود دارد.

5. در دسترس بودن اطلاعات.

6. ارتباط.

2. متراکم سازی داده ها

قاعده معروف در وجود دارد دنیای کامپیوترچه ظرفیتی هارد دیسکهرگز نمی تواند زیاد باشد. در واقع، مخالفت با او سخت است: مهم نیست که هارد دیسک هنگام خرید چقدر بزرگ به نظر برسد، به سرعت با انواع چیزها مسدود می شود. اطلاعات غیر ضروری. از آنجایی که حیف است همه چیز را حذف کنید، ارزش دارد که بارها و بارها همه این موارد را در نوعی ذخیره سازی، بایگانی "ذخیره" کنید.

بامتراکم سازی داده ها- روشی برای رمزگذاری مجدد داده ها به منظور کاهش حجم آن انجام می شود. برای استفاده منطقی تر از وسایل ذخیره سازی و انتقال داده استفاده می شود. اگر روش‌های فشرده‌سازی اطلاعات برای اسناد تکمیل‌شده اعمال شود، اصطلاح «فشرده‌سازی داده» اغلب با عبارت «بایگانی داده» جایگزین می‌شود.

فشرده سازی بر اساس حذف اطلاعات اضافی موجود در داده های منبع است. مثالی از افزونگی، تکرار قطعات در متن است (مثلاً کلمات طبیعی یا زبان ماشین). چنین افزونگی معمولاً با جایگزینی توالی تکرار شده با یک مقدار کوتاهتر (کد) حذف می شود. نوع دیگری از افزونگی به این دلیل است که برخی از مقادیر در داده های فشرده شده بیشتر از سایرین رخ می دهند و می توان داده های متداول را با مقادیر بیشتری جایگزین کرد. کدهای کوتاه، و موارد نادر - طولانی تر (فشرده سازی احتمالی). فشرده سازی داده هایی که ویژگی های افزونگی ندارند (به عنوان مثال، سیگنال تصادفییا نویز)، بدون تلفات غیرممکن است. همچنین معمولاً امکان فشرده سازی اطلاعات رمزگذاری شده وجود ندارد.

الگوریتم های فشرده سازی برای متون/فایل هایی با فرمت ناشناخته

2 روش اصلی برای فشرده سازی فایل های با فرمت ناشناخته وجود دارد.

در هر مرحله از الگوریتم فشرده سازی، یا کاراکتر بعدی همانطور که هست قرار می گیرد (با یک پرچم خاص که نشان می دهد فشرده نشده است)، یا مرزهای کلمه از قطعه قبلی که با کاراکترهای بعدی فایل منطبق است نشان داده می شود. . باز کردن فایل های فشرده شده به این روش بسیار سریع است، بنابراین از این الگوریتم ها برای ایجاد برنامه های خود استخراج استفاده می شود.

برای هر دنباله در هر لحظه از زمان، آماری از وقوع آن در فایل جمع آوری می شود. بر اساس این آمار، احتمال مقادیر برای نماد بعدی محاسبه می شود. پس از این، می توانید از یک یا نوع دیگری استفاده کنید کدگذاری آماریبه عنوان مثال، کدگذاری حسابی یا هافمن برای جایگزینی دنباله های متداول با توالی های کوتاه تر و به ندرت با توالی های طولانی تر.

فشرده سازی می تواند بدون تلفات باشد (زمانی که امکان بازیابی داده های اصلی بدون اعوجاج وجود دارد) یا با تلفات (بازیابی با اعوجاج هایی که از نقطه نظر استفاده بیشتر از داده های بازیابی شده ناچیز هستند امکان پذیر است). فشرده سازی بدون تلفات معمولاً در پردازش استفاده می شود برنامه های کامپیوتریو داده ها، کمتر - برای کاهش حجم اطلاعات صوتی، عکس و ویدئو. فشرده سازی با اتلاف برای کاهش حجم اطلاعات صوتی، عکس و تصویر به طور قابل توجهی استفاده می شود کارآمدتر از فشرده سازیبدون ضرر

3. نرم افزار فشرده سازی داده ها

اگر روش های فشرده سازی اطلاعات برای اسناد نهایی اعمال شود. اغلب عبارت "فشرده سازی داده ها" با عبارت "بایگانی داده ها" جایگزین می شود و نرم افزاری که این عملیات را انجام می دهد نامیده می شود. آرشیوداران

آرشیوها برای فشرده سازی فایل ها طراحی شده اند. تا فضای دیسک اشغال شده را کاهش دهند. آنها از طریق روش های خاص بسته بندی اطلاعات، به فشرده سازی اطلاعات روی دیسک ها، ایجاد کپی از فایل ها در یک فایل آرشیو اجازه می دهند. علیرغم این واقعیت که حجم حافظه کامپیوتر به طور مداوم در حال افزایش است، نیاز به آرشیو کاهش نمی یابد.

بنابراین، بایگانی می تواند مفید باشد:

1) هنگام ذخیره کپی از فایل ها و دیسک های فلاپی، زیرا فلاپی دیسک از نظر اندازه محدود است.

2) برای آزاد کردن فضای روی هارد دیسک.

3) هنگام انتقال اطلاعات از طریق شبکه.

آرشیو اطلاعات تغییر شکلی از اطلاعات است که حجم آن کاهش نمی یابد، اما مقدار اطلاعات ثابت می ماند.

فایل فشرده شده آرشیو نامیده می شود. فایل آرشیو به صورت ویژه است فایل سازمان یافته، حاوی یک یا چند فایل به صورت فشرده و غیر فشرده و اطلاعات رسمیدر مورد نام آنها

میزان فشرده سازی اطلاعات به نوع آن بستگی دارد منبع فایل، بر روی برنامه مورد استفاده و همچنین روش بسته بندی انتخابی. فایل ها به بهترین شکل فشرده می شوند اشیاء گرافیکی، فایل های متنی و فایل های داده، که نسبت فشرده سازی آنها می تواند به 5-40٪ برسد، فایل ها کمتر فشرده می شوند. برنامه های اجراییو بارگذاری ماژول ها -60-90٪.

توسعه دهندگان مختلف برنامه های آرشیو زیادی ایجاد کرده اند. در میان آنها، رایج ترین برای ویندوز WINRAR، WINZIP هستند.

با محبوبیتش بایگانی کننده WinRAR, بدون شک در روسیه در مقام اول و در کل جهان یکی از اولین هاست. آرشیو توسط Evgeny Roshal در سال 2003 ساخته شد. برنامه فراهم می کند تسلط کاملفایل های موجود در آرشیو، بازیابی آرشیوهای آسیب دیده، رمزگذاری، ایجاد آرشیوهای خود استخراج و چند جلدی.

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

خود الگوریتم Zip آزادانه در ده ها برنامه استفاده می شود، با این حال، برای بسیاری از کاربران ویندوز، WinZip دقیقاً مناسب است. برنامه استانداردبرای کار با آرشیو ابزارهای پردازش آرشیو داخلی WinZIP به شما امکان بسته بندی، مشاهده و استخراج فایل ها از فرمت های بایگانی پرکاربرد مانند ZIP، CAB، Microsoft Compress، GZIP، TAR و غیره را می دهد. WinZip بسیار ساده و آسان برای استفاده است.

با این حال، استفاده از آرشیوهای جداگانه با پوسته های گرافیکی خود همیشه توجیه پذیر نیست. راحت ترین پوسته برای بایگانی ها یک مدیر فایل معمولی است، به عنوان مثال، فرمانده ویندوز، که قابلیت مشاهده و بازکردن فایل های آرشیو با فرمت های ZTP, ARJ, RAR, TAR, GZ, CAB, ACE را دارد. با این حال، اکثر عملیات با فایل ها، از جمله بایگانی، در چنین مدیرانی انجام می شود.

4. فشرده سازی داده های از دست رفته

فشرده سازی داده های از دست رفتهیک روش فشرده سازی داده است که در آن فایل از حالت فشرده خارج شده با نسخه اصلی متفاوت است، اما "به اندازه کافی نزدیک" است که به نوعی مفید باشد. این نوع فشرده سازی اغلب در اینترنت به خصوص در جریان و تلفن استفاده می شود. این روش ها اغلب در این زمینه کدک نامیده می شوند. یک جایگزین فشرده سازی بدون تلفات است.

انواع فشرده سازی با اتلاف

دو طرح اصلی فشرده سازی با تلفات وجود دارد:

در کدک‌های تبدیل، فریم‌هایی از تصاویر یا صدا گرفته می‌شوند، به بخش‌های کوچک بریده می‌شوند، به فضای پایه جدید تبدیل می‌شوند و کوانتیزه می‌شوند. سپس نتیجه با استفاده از روش های آنتروپی فشرده می شود.

در کدک های پیش بینی، داده های قبلی و/یا بعدی برای پیش بینی فریم فعلی یک تصویر یا صدا استفاده می شود. خطای بین داده‌های پیش‌بینی‌شده و داده‌های واقعی، همراه با اطلاعات اضافی مورد نیاز برای انجام پیش‌بینی، سپس کوانتیزه و کدگذاری می‌شود.

برخی از سیستم ها این دو تکنیک را با استفاده از کدک های تبدیل برای فشرده سازی سیگنال های خطا تولید شده در مرحله پیش بینی ترکیب می کنند.

فشرده سازی بدون اتلاف در مقابل

مزیت روش‌های فشرده‌سازی با اتلاف نسبت به روش‌های فشرده‌سازی بدون تلفات این است که روش‌های اولیه از نظر نسبت تراکم به طور قابل‌توجهی برتر هستند، در حالی که همچنان نیازمندی‌های مشخص شده را برآورده می‌کنند.

روش های فشرده سازی با اتلاف اغلب برای فشرده سازی صدا یا تصاویر استفاده می شود.

در چنین مواردی، فایل فشرده نشده ممکن است در سطح مقایسه بیت به بیت بسیار متفاوت از نسخه اصلی باشد، اما در اکثر برنامه های کاربردی عملاً برای گوش یا چشم انسان قابل تشخیص نیست.

بسیاری از روش ها بر ویژگی های ساختاری اندام های حسی انسان تمرکز دارند. مدل روان آکوستیک تعیین می کند که چه مقدار صدا می تواند فشرده شود بدون اینکه کیفیت صدای درک شده را کاهش دهد. عیوب ناشی از فشرده سازی ضعیف که برای گوش یا چشم انسان قابل توجه است، به عنوان مصنوعات فشرده سازی شناخته می شوند.

داده‌های صوتی که تحت فشرده‌سازی با اتلاف قرار گرفته‌اند توسط دادگاه‌ها به عنوان مدرک مادی پذیرفته نمی‌شوند (و حتی مورد توجه قرار نمی‌گیرند) زیرا اطلاعاتی که تحت فشرده‌سازی قرار گرفته‌اند آثار فشرده‌سازی را به دست می‌آورند و نویز طبیعی محیطی را که از آن ضبط می‌شود از دست می‌دهند. ساخته شده. بنابراین، نمی توان تشخیص داد که ضبط واقعی است یا سنتز شده است. از همین رو سوابق مهمتوصیه می شود در قالب PCM تولید کنید یا از ضبط صوت استفاده کنید.

عکس های ثبت شده در فرمت JPEG، می تواند توسط دادگاه پذیرفته شود (علیرغم اینکه داده ها تحت فشرده سازی با اتلاف قرار گرفته اند). اما در عین حال دوربینی که با آن گرفته شده اند یا جدول نمایش رنگ عکس مربوطه باید ارائه شود.

روش های فشرده سازی داده های از دست رفته

v فشرده سازی تصویر:

· کاهش عمق رنگ.

· روش جزء اصلی.

· فشرده سازی فراکتال.

v فشرده سازی ویدئو:

· فلش (همچنین از تصاویر متحرک JPEG پشتیبانی می کند).

· MPEG-1 قسمت 2;

· MPEG-2 قسمت 2;

· MPEG-4 قسمت 2;

v فشرده سازی صدا:

· MP3 - توسط مشخصات MPEG-1 تعریف شده است.

· Ogg Vorbis (با عدم وجود محدودیت های ثبت اختراع و موارد دیگر مشخص می شود کیفیت بالا);

· AAC، AAC+ - در چندین نسخه وجود دارد که با مشخصات MPEG-2 و MPEG-4 تعریف شده است، به عنوان مثال، در رایانه اپل استفاده می شود.

· eAAC+ - فرمتی ارائه شده توسط سونی به عنوان جایگزینی برای AAC و AAC+.

WMA دارایی مایکروسافت است.

از دست دادن بایگانی فشرده سازی اطلاعات

5. فشرده سازی داده ها بدون از دست دادن اطلاعات

فشرده سازی بدون اتلاف(به انگلیسی: Lossless data compression) - روشی برای فشرده سازی اطلاعات که با استفاده از آن می توان اطلاعات رمزگذاری شده را با دقت بیت بازیابی کرد. در این حالت داده های اصلی به طور کامل از حالت فشرده بازیابی می شوند. این نوع فشرده سازی اساساً با فشرده سازی داده های با اتلاف متفاوت است. برای هر نوع اطلاعات دیجیتال، به عنوان یک قاعده، الگوریتم های فشرده سازی بدون تلفات بهینه وجود دارد.

فشرده سازی اطلاعات بدون تلفات در بسیاری از برنامه ها استفاده می شود. به عنوان مثال، در فایل محبوب استفاده می شود فرمت ZIPو ابزار یونیکس Gzip. همچنین به عنوان یک جزء در فشرده سازی با اتلاف استفاده می شود.

فشرده‌سازی بدون تلفات زمانی استفاده می‌شود که مهم است که داده‌های فشرده‌شده مشابه اصلی باشند. یک مثال رایج فایل های اجرایی و کد منبع است. مقداری گرافیک فرمت های فایلمانند PNG یا GIF، فقط از فشرده سازی بدون تلفات استفاده کنید. در حالی که دیگران (TIFF، MNG) می توانند از فشرده سازی با اتلاف و بدون تلفات استفاده کنند.

تکنیک فشرده سازی بدون اتلاف

از ترکیبات به این نتیجه می رسد که هیچ الگوریتم فشرده سازی بدون تلفات وجود ندارد که بتواند هر فایلی را حداقل یک بایت کاهش دهد. با این حال، این نشانه ای از کیفیت یک الگوریتم فشرده سازی نیست - الگوریتم باید به طور موثر بر روی داده هایی که برای آن طراحی شده است کار کند.

الگوریتم‌های فشرده‌سازی چند منظوره با توانایی کاهش متمایز می‌شوند طیف گسترده ایداده ها - فایل های اجرایی، فایل های داده، متون، گرافیک ها و غیره هستند و در بایگانی ها استفاده می شوند. الگوریتم‌های تخصصی برای نوع خاصی از فایل (متن، گرافیک، صدا و غیره) طراحی شده‌اند، اما این گونه فایل‌ها را بسیار قوی‌تر فشرده می‌کنند. به عنوان مثال: آرشیوها صدا را حدود یک سوم (1.5 بار) فشرده می کنند، در حالی که FLAC آن را 2.5 بار فشرده می کند. بیشتر الگوریتم‌های تخصصی برای انواع فایل‌های «خارجی» کاربرد چندانی ندارند: به عنوان مثال، داده‌های صوتی توسط الگوریتمی که برای متون طراحی شده است، فشرده نمی‌شوند.

اکثر الگوریتم‌های فشرده‌سازی بدون تلفات در دو مرحله عمل می‌کنند: اولی یک مدل آماری برای داده‌های ورودی تولید می‌کند، دومی داده‌های ورودی را به یک نمایش بیتی نگاشت می‌کند و از مدل برای تولید داده‌های «احتمالی» (یعنی اغلب اتفاق می‌افتد) استفاده می‌کند. بیشتر از داده های "غیر احتمالی" استفاده می شود.

مدل‌های آماری الگوریتم‌های متن (یا داده‌های باینری متنی مانند فایل‌های اجرایی) عبارتند از:

تبدیل Burrows-Wheeler (پیش پردازش مرتب‌سازی بلوکی که فشرده‌سازی را کارآمدتر می‌کند)

LZ77 و LZ78 (DEFLATE استفاده می شود)

الگوریتم های کدگذاری از طریق تولید توالی بیت:

· الگوریتم هافمن (DEFLATE نیز استفاده می شود)

کدگذاری حسابی

روش های فشرده سازی بدون تلفات

· چند منظوره

· کدگذاری طول اجرا - مدار ساده، دادن فشرده سازی خوبداده هایی که حاوی مقادیر تکراری زیادی هستند

· LZW - در gif و بسیاری دیگر استفاده می شود.

· Deflate - در gzip، یک نسخه پیشرفته از zip، و به عنوان بخشی از فرآیند فشرده سازی PNG استفاده می شود.

· LZMA - مورد استفاده در 7-zip.

v فشرده سازی صدا:

· Apple Lossless - ALAC (Apple Lossless Audio Codec).

· کدگذاری بدون افت صدا - همچنین به عنوان MPEG-4 ALS شناخته می شود.

· انتقال مستقیم جریان - DST.

· کدک صوتی بدون اتلاف رایگان - FLAC.

v فشرده سازی گرافیک

· ABO - بهینه سازی باینری تطبیقی.

· GIF - (فقط برای تصاویر حاوی کمتر از 256 رنگ بدون ضرر).

· JBIG2 - (با یا بدون تصاویر B/W با اتلاف).

· JPEG-LS - (استاندارد فشرده سازی بدون تلفات / تقریباً بدون تلفات).

· JPEG 2000 - (شامل فشرده سازی بدون تلفات؛ همچنین توسط Sunil Kumar، استاد دانشگاه ایالتی سن دیگو آزمایش شده است).

· PGF - فایل گرافیکی پیشرفته (فشرده سازی بدون ضرر/بدون تلفات).

· PNG - گرافیک شبکه قابل حمل.

· WMPhoto - (از جمله روش فشرده سازی بدون اتلاف).

v فشرده سازی ویدیو

· کدک انیمیشن.

· کدک ویدیویی CamStudio.

6. ذخیره سازی اطلاعات (متن، گرافیک، صدا)

اطلاعات با استفاده از رسانه های ذخیره سازی خاصی ذخیره می شود. انسان دانش خود را یا در حافظه خود ذخیره می کند یا در برخی از آنها رسانه خارجی.

در ابتدا، شخص از حافظه خود برای ذخیره و انباشت اطلاعات استفاده می کرد - او به سادگی اطلاعات دریافتی را حفظ می کرد و مدتی آن را به خاطر می آورد. به تدریج مردم به این نتیجه رسیدند که این روش ذخیره اطلاعات دارای معایبی است. انسان با درک غیرقابل اعتماد بودن این روش ذخیره و انباشت اطلاعات، با اختراع نوشتن - روی پاپیروس ها و بعداً در کتاب ها، شروع به ثبت اطلاعات در قالب نقاشی کرد. سپس صفحات عکاسی و دستگاه های ضبط صدا به عنوان عناصر ظاهر شدند حافظه خارجیاطلاعات تصویری و صوتی، دفترچه یادداشت، کتاب مرجع، دایره المعارف و ... که ما به آنها می گوییم ذخیره سازی خارجیداده ها. در اواسط قرن بیستم، کامپیوتر اختراع شد. بلافاصله این سوال مطرح شد که او چگونه اطلاعات را ذخیره می کند.

رسانه اطلاعاتی می تواند ماهیت متفاوتی داشته باشد: کاغذ. مکانیکی، مغناطیسی، الکتریکی. اطلاعات ثبت شده در رسانه ها می تواند به صورت نمادی باشد که برای انسان قابل درک باشد یا به صورت رمزگذاری شده باشد. اطلاعات برای ضبط صوت، ضبط ویدئو، دوربین فیلم - صداذخیره شده در دستگاه های خاص: کاست های صوتی، کاست های ویدئویی، فیلم ها. استفاده از میکروفون و دستگاه های دیگر اطلاعات صوتیروی نوار مغناطیسی ضبط شده است.

در رایانه ها، دستگاه های زیر برای ضبط و خواندن اطلاعات شروع به استفاده کردند: کارت خوان های پانچ. درایوهای نوار مغناطیسی، فلاپی (درایو دیسک) و هارد (دیسک سخت) درایوهای دیسک مغناطیسی؛ درایوهای دیسک فشرده (CD-ROM) و سایر دستگاه های مدرن تر برای ذخیره و ذخیره اطلاعات.

کتابشناسی - فهرست کتب

1. قانون فدرال فدراسیون روسیه"در مورد اطلاعات، اطلاعات و حفاظت از اطلاعات" مورخ 27 ژوئیه 2006 شماره 149-FZ.

2. لوین ا.ش. کتابچه راهنمای خودآموز کار با کامپیوتر. - سن پترزبورگ: پیتر، 2006. - 655 ص.

3. Romanova N.I. مبانی علوم کامپیوتر. - سن پترزبورگ: Politekhnika, 2004. -224 p.

4. Simonovich S.V. علوم کامپیوتر. دوره پایه. - سن پترزبورگ: پیتر، 2008 -640 ص.

ارسال شده در Allbest.ru

اسناد مشابه

    انواع فشرده سازی داده ها: با اتلاف و بدون تلفات. فشرده سازی با حداقل افزونگی. کدنویسی با استفاده از روش شانون فانو تست برنامه فشرده سازی فایل های bmp و xls. پیاده سازی در الگوریتم دلفیفشرده سازی شانون و هافمن.

    کار دوره، اضافه شده در 2011/01/26

    طبقه بندی و ویژگی های اصلی روش فشرده سازی داده ها. محاسبه نسبت تراکم و ارزیابی اثربخشی آنها. الگوریتم های روش های فشرده سازی چند جمله ای، برون یابی و درون یابی و مقایسه آنها. پیش بینی خطی بهینه

    کار دوره، اضافه شده در 2011/03/17

    آرشیو و فشرده سازی به عنوان روش های فشرده سازی تصویر الگوریتم های فشرده سازی داده ها ایدز، که برای کاهش اندازه فایل استفاده می شود: تغییر مدل رنگتصاویر، تغییر وضوح فایل شطرنجی، نمونه برداری مجدد.

    ارائه، اضافه شده در 01/06/2014

    مطالعه انواع اصلی برنامه های آرشیو. فشرده سازی فایل در حین بایگانی نشانگر میزان فشرده سازی فایل ارزیابی عملکرد محبوب ترین برنامه های بسته بندی. مشخصات فنی فرآیندهای فشرده سازی روش های بایگانی بدون ضرر

    چکیده، اضافه شده در 1392/05/12

    افشای هدف فشرده‌سازی فایل و مشخص کردن هدف بایگانی‌ها به‌عنوان برنامه‌هایی که فایل‌ها را برای سهولت انتقال و ذخیره‌سازی در یک آرشیو بسته و باز می‌کنند. انواع اصلی آرشیو: فایل، نرم افزار، دیسک. روش فشرده سازی بدون اتلاف

    ارائه، اضافه شده در 04/05/2011

    مفاهیم اولیه و روش های فشرده سازی داده ها. تبدیل اطلاعات ذخیره شده در یک فایل به فرمی که افزونگی در ارائه آن را کاهش می دهد. روش های فشرده سازی آماری و فرهنگ لغت. برنامه های آرشیو، ویژگی های اساسی WinRAR.

    تست، اضافه شده در 03/12/2011

    بررسی کوتاهنظریه های اساسی فشرده سازی مفاهیم ایده ها و اجرای آنها. فشرده سازی داده ها با استفاده از تبدیل Burrows-Wheeler. الگوریتم استاتیک هافمن الگوریتم فشرده سازی تطبیقی ​​محلی الگوریتم زیو لمپل (ولچ) و روش شانون فانو.

    کار عملی، اضافه شده در 2014/04/24

    آنتروپی و مقدار اطلاعات تخمین ترکیبی، احتمالاتی و الگوریتمی مقدار اطلاعات. مدل سازی و کدنویسی. برخی از الگوریتم های فشرده سازی داده ها الگوریتم کدگذاری حسابی. انتقال و دریافت افزایشی.

    کار دوره، اضافه شده در 2009/07/28

    استفاده از الگوریتم هایی که درجه بالایی از فشرده سازی را برای افزایش سرعت انتقال داده ها از طریق کانال های ارتباطی فراهم می کند. ویژگی ها و روش های یافتن تجزیه ارزش منفرد. توسعه برنامه ای که فشرده سازی تصویر را با استفاده از فشرده سازی SVD پیاده سازی می کند.

    پایان نامه، اضافه شده در 1394/10/13

    برنامه هایی برای ایجاد آرشیو راندمان فشرده سازی داده ها به عنوان مهمترین ویژگیبایگانی ها روش های اصلی فشرده سازی داده ها ویژگی های برنامه برای بسته بندی متون و برنامه های WinRar. بسته بندی فایل ها، بسته بندی فایل ها و پوشه ها در یک آرشیو مشترک.

"متراکم سازی داده ها"

ویژگی مشخصه اکثر انواع داده، افزونگی آنهاست. میزان افزونگی داده ها به نوع داده بستگی دارد. به عنوان مثال، برای داده های ویدئویی، درجه افزونگی چندین برابر بیشتر از داده های گرافیکی است، و درجه افزونگی داده های گرافیکی، به نوبه خود، از درجه افزونگی داده های متنی بیشتر است. عامل دیگری که بر درجه افزونگی تأثیر می گذارد، سیستم کدگذاری اتخاذ شده است. نمونه ای از سیستم های کدگذاری، زبان های معمولی ارتباطی است که چیزی بیش از سیستم هایی برای کدگذاری مفاهیم و ایده هایی برای بیان افکار نیستند. بنابراین، مشخص شده است که رمزگذاری داده های متنی با استفاده از زبان روسی به طور متوسط ​​20-25٪ بیشتر از رمزگذاری داده های مشابه با استفاده از زبان انگلیسی، افزونگی می دهد.

برای انسان ها، افزونگی داده ها اغلب با کیفیت اطلاعات مرتبط است، زیرا افزونگی تمایل به بهبود درک و درک اطلاعات دارد. با این حال، هنگامی که صحبت از ذخیره و انتقال اطلاعات با استفاده از فناوری رایانه می شود، افزونگی نقش منفی ایفا می کند، زیرا منجر به افزایش هزینه ذخیره و انتقال اطلاعات می شود. این مشکل به ویژه در مورد پردازش حجم عظیمی از اطلاعات با مقادیر ناچیز رسانه ذخیره سازی مهم می شود. در این راستا، مشکل کاهش افزونگی یا فشرده سازی داده ها به طور مداوم مطرح می شود. اگر روش‌های فشرده‌سازی داده‌ها برای فایل‌های تمام‌شده اعمال شود، اغلب به جای عبارت «فشرده‌سازی داده» از عبارت «بایگانی داده» استفاده می‌شود؛ نسخه فشرده داده‌ها نامیده می‌شود. بایگانی، و نرم افزارهایی که روش های فشرده سازی را پیاده سازی می کنند نامیده می شوند بایگانی ها.

بسته به شیئی که داده های فشرده سازی در آن قرار دارند:

    فشرده سازی (بایگانی) فایل ها: برای کاهش اندازه فایل ها هنگام آماده سازی آنها برای انتقال از طریق کانال های ارتباطی یا برای حمل و نقل بر روی رسانه های خارجی با ظرفیت کم استفاده می شود.

    فشرده سازی (بایگانی) پوشه ها: به عنوان وسیله ای برای کاهش حجم پوشه ها قبل از ذخیره سازی طولانی مدت استفاده می شود، به عنوان مثال، در هنگام پشتیبان گیری.

    فشرده سازی دیسک (تراکم): برای افزایش کارایی استفاده از فضای دیسک با فشرده سازی داده ها هنگام نوشتن آن در یک رسانه ذخیره سازی (معمولاً با استفاده از سیستم عامل) استفاده می شود.

الگوریتم های عملی فشرده سازی داده های زیادی وجود دارد، اما همه آنها بر اساس سه روش نظری برای کاهش افزونگی داده ها هستند. راه اول تغییر محتوای داده ها، دوم تغییر ساختار داده ها، و سوم این است که ساختار و محتوای داده ها را همزمان تغییر دهید.

اگر فشرده سازی داده ها محتوای آن را تغییر دهد، روش فشرده سازی نامیده می شود غیر قابل برگشت، یعنی هنگام بازیابی (از بایگانی کردن) داده ها از یک آرشیو، اطلاعات به طور کامل بازیابی نمی شوند. چنین روش هایی اغلب روش های فشرده سازی کنترل شده با تلفات نامیده می شوند. واضح است که این روش ها فقط برای انواع داده ای قابل استفاده هستند که از دست دادن بخشی از محتوا منجر به تحریف قابل توجه اطلاعات نمی شود. این نوع داده ها شامل داده های تصویری، صوتی و گرافیکی است. روش‌های فشرده‌سازی کنترل‌شده با تلفات، نرخ‌های فشرده‌سازی بسیار بالاتری را ارائه می‌کنند، اما نمی‌توانند برای داده‌های متنی اعمال شوند. نمونه هایی از فرمت های فشرده سازی با اتلاف عبارتند از:

    JPEG - برای داده های گرافیکی؛

    MPG - برای داده های ویدئویی؛

    MP3 - برای داده های صوتی.

اگر فشرده سازی داده ها فقط ساختار داده ها را تغییر دهد، روش فشرده سازی نامیده می شود برگشت پذیر. در این صورت امکان بازیابی کامل اطلاعات از آرشیو وجود دارد. روش‌های فشرده‌سازی برگشت‌پذیر را می‌توان برای هر نوع داده اعمال کرد، اما فشرده‌سازی کمتری نسبت به روش‌های فشرده‌سازی برگشت‌ناپذیر فراهم می‌کند. نمونه هایی از فرمت های فشرده سازی بدون تلفات:

    GIF، TIFF - برای داده های گرافیکی؛

    AVI - برای داده های ویدئویی؛

    ZIP، ARJ، RAR، CAB، LH - برای انواع داده دلخواه.

روش‌های فشرده‌سازی بدون اتلاف عملی مختلفی وجود دارد که برای انواع مختلف داده‌ها و حجم‌های مختلف کارایی متفاوتی دارند. با این حال، این روش ها بر اساس سه الگوریتم نظری هستند:

    الگوریتم RLE (Run Length Encoding)؛

    الگوریتم های گروه KWE (KeyWord Encoding)؛

    الگوریتم هافمن

الگوریتم RLE

الگوریتم RLE مبتنی بر ایده شناسایی توالی داده های مکرر و جایگزینی آنها با ساختار ساده تری است که کد داده و ضریب تکرار را مشخص می کند. به عنوان مثال، اجازه دهید توالی زیر داده شود که در معرض فشرده سازی است:

1 1 1 1 2 2 3 4 4 4

الگوریتم RLE جایگزینی آن را با ساختار زیر پیشنهاد می کند: 1 4 2 2 3 1 4 3، که در آن عدد اول هر جفت اعداد کد داده و دومی ضریب تکرار است. اگر 1 بایت برای ذخیره هر عنصر داده از دنباله ورودی اختصاص داده شود، کل دنباله 10 بایت حافظه اشغال می کند، در حالی که دنباله خروجی (نسخه فشرده) 8 بایت حافظه را اشغال می کند. نسبت تراکم، که درجه فشرده سازی را مشخص می کند، می تواند با استفاده از فرمول محاسبه شود:

که در آن Vx مقدار حافظه مورد نیاز برای ذخیره توالی داده های خروجی (نتیجه) است، Vn دنباله داده های ورودی است.

هر چه نسبت تراکم کمتر باشد، روش موثرترفشرده سازی واضح است که الگوریتم RLE زمانی که توالی داده های تکرار شونده طولانی تر باشد، اثر فشرده سازی بهتری خواهد داشت. در مورد مثالی که در بالا بحث شد، اگر دنباله ورودی به این صورت باشد: 1 1 1 1 1 1 3 4 4 4، آنگاه نسبت تراکم 60 درصد خواهد بود. در این راستا، کارایی بیشتر الگوریتم RLE هنگام فشرده سازی داده های گرافیکی (به ویژه برای تصاویر تک رنگ) حاصل می شود.

الگوریتم های گروه KWE

الگوریتم فشرده سازی کلمه کلیدی بر اساس اصل رمزگذاری واحدهای واژگانی در گروه های بایت با طول ثابت است. یک مثال از یک آیتم واژگانی یک کلمه معمولی است. در عمل، توالی‌های تکرار شونده از نمادها برای ایفای نقش واحدهای واژگانی انتخاب می‌شوند و توسط زنجیره‌ای از نمادها (کد) با طول کوتاه‌تر کدگذاری می‌شوند. نتیجه رمزگذاری در یک جدول قرار می گیرد و به اصطلاح فرهنگ لغت را تشکیل می دهد.

تعداد کمی از این الگوریتم پیاده سازی شده است که از جمله رایج ترین آنها می توان به الگوریتم Lempel-Ziv (الگوریتم LZ) و اصلاح آن، الگوریتم Lempel-Ziv-Welch (الگوریتم LZW) اشاره کرد. فرهنگ لغت در این الگوریتمیک لیست بالقوه بی پایان از عبارات است. الگوریتم با یک فرهنگ لغت تقریباً خالی شروع می شود که شامل تنها یک رشته رمزگذاری شده است، به اصطلاح رشته NULL. هنگام خواندن کاراکتر بعدی دنباله داده های ورودی، به خط فعلی اضافه می شود. این فرآیند تا زمانی ادامه می یابد که خط فعلی با برخی از عبارت های فرهنگ لغت مطابقت داشته باشد. اما دیر یا زود خط فعلی دیگر با برخی از عبارت های فرهنگ لغت مطابقت ندارد. در نقطه‌ای که خط فعلی آخرین تطابق فرهنگ لغت به اضافه کاراکتر پیام را نشان می‌دهد، رمزگذار کدی را تولید می‌کند که شامل فهرست تطابق و کاراکتر بعدی است که مطابقت خط را شکست. یک عبارت جدید، متشکل از فهرست مطابقت و کاراکتر زیر، به فرهنگ لغت اضافه می شود. دفعه بعد که این عبارت در یک پیام ظاهر می شود، می توان از آن برای ساخت یک عبارت طولانی تر استفاده کرد که درجه فشرده سازی اطلاعات را افزایش می دهد.

الگوریتم LZW حول یک جدول عبارت (فرهنگ لغت) ساخته شده است که رشته کاراکترهای پیام فشرده را در کدهای با طول ثابت جایگزین می کند. جدول به اصطلاح دارای خاصیت advance است، یعنی برای هر عبارتی در فرهنگ لغت که از یک عبارت خاص w و نماد K تشکیل شده است، عبارت w نیز وارد فرهنگ لغت می شود. اگر تمام قسمت های فرهنگ لغت به طور کامل پر شود، رمزگذاری دیگر تطبیق پذیر نیست (رمزگذاری بر اساس عباراتی که قبلاً در فرهنگ لغت وجود دارد رخ می دهد).

الگوریتم های فشرده سازی این گروه برای داده های متنی بزرگ بیشترین کارایی را دارند و برای فایل های کوچک (به دلیل نیاز به ذخیره فرهنگ لغت) بی اثر هستند.

الگوریتم هافمن

الگوریتم هافمن مبتنی بر ایده کدگذاری گروه بیت است. ابتدا تجزیه و تحلیل فرکانس توالی داده های ورودی انجام می شود، یعنی فراوانی وقوع هر کاراکتر یافت شده در آن مشخص می شود. پس از این، نمادها با کاهش دفعات وقوع مرتب می شوند.

ایده اصلی این است: هر چه یک کاراکتر بیشتر اتفاق بیفتد، بیت های کمتری رمزگذاری می شود. نتیجه رمزگذاری به فرهنگ لغت مورد نیاز برای رمزگشایی وارد می شود. بیایید به یک مثال ساده نگاه کنیم که نشان می دهد الگوریتم هافمن چگونه کار می کند.

اجازه دهید متنی داده شود که در آن حرف "A" 10 بار، حرف "B" - 8 بار، "C" - 6 بار، "D" - 5 بار، "E" و "F" - هر بار 4 بار ظاهر شود. . سپس یکی از گزینه های ممکن کدگذاری با استفاده از الگوریتم هافمن در جدول 1 نشان داده شده است.

میز 1.

فراوانی وقوع

کد بیت

همانطور که از جدول 1 مشاهده می شود، اندازه متن ورودی قبل از فشرده سازی 37 بایت است، در حالی که پس از فشرده سازی 93 بیت است، یعنی حدود 12 بایت (بدون در نظر گرفتن طول فرهنگ لغت). نسبت تراکم 32 درصد است. الگوریتم هافمن جهانی است، می توان از آن برای فشرده سازی داده ها از هر نوع استفاده کرد، اما برای فایل های کوچک (به دلیل نیاز به ذخیره یک فرهنگ لغت) بی اثر است.

در عمل، نرم افزار فشرده سازی داده ها این سه الگوریتم خالص را ترکیب می کند، زیرا اثربخشی آنها به نوع و حجم داده ها بستگی دارد. جدول 2 فرمت های فشرده سازی رایج و برنامه های آرشیو مربوطه را نشان می دهد که در عمل استفاده می شوند.

جدول 2.

فرمت فشرده سازی

سیستم عامل MS DOS

سیستم عامل ویندوز

برنامه آرشیو

برنامه باز کردن زیپ

برنامه آرشیو

برنامه باز کردن زیپ

علاوه بر این، آرشیوهای مدرن طیف کاملی از خدمات را برای کار با آرشیو در اختیار کاربر قرار می دهند که اصلی ترین آنها عبارتند از:

    ایجاد یک آرشیو جدید؛

    افزودن فایل ها به آرشیو موجود؛

    باز کردن فایل ها از آرشیو؛

    ایجاد آرشیوهای خود استخراج کننده؛

    ایجاد آرشیوهای توزیع شده با اندازه ثابت برای رسانه های ذخیره سازی کوچک؛

    محافظت از آرشیو با رمز عبور از دسترسی غیرمجاز؛

    مشاهده محتویات فایل‌ها با فرمت‌های مختلف بدون باز کردن بسته‌بندی اولیه؛

    جستجو برای فایل ها و داده ها در داخل بایگانی؛

    چک کردن ویروس ها در بایگانی قبل از باز کردن بسته بندی.

    انتخاب و تنظیم نسبت تراکم

کنترل سوالات

1. چه عواملی بر میزان افزونگی داده ها تأثیر می گذارد؟ 2. آرشیو چیست؟ به چه ابزار نرم افزاری بایگانی می گویند؟ 3. چرا روش های فشرده سازی که محتوای داده ها را تغییر می دهند برگشت ناپذیر نامیده می شوند؟ 4. نمونه هایی از فرمت های فشرده سازی با اتلاف را ذکر کنید. 5. مزیت روش های فشرده سازی برگشت پذیر نسبت به روش های برگشت ناپذیر چیست؟ در مورد ضرر چطور؟ 6. نسبت تراکم و بازده روش فشرده سازی چه رابطه ای دارد؟ 7. ایده اصلی الگوریتم RLE چیست؟ 8. ایده اصلی الگوریتم های گروه KWE چیست؟ 9. ایده اصلی الگوریتم هافمن چیست؟ 10. بایگانی نرم افزارهایی را می شناسید؟ آنها را به اختصار شرح دهید.

    علوم کامپیوتر. دوره پایه. / اد. S.V.Simonovich. - سن پترزبورگ، 2000

    A.P. Miklyaev, IBM PC User's Handbook ویرایش 3 M.:, "Solon-R"، 2000، 720 p.

    Simonovich S.V.، Evseev G.A.، Murakhovsky V.I. شما یک کامپیوتر خریدید: راهنمای کامل مبتدیان برای پرسش و پاسخ. - M.: AST-PRESS BOOK; Inforcom-Press, 2001.- 544 pp.: ill. (1000 نکته).

    Kovtanyuk Yu.S.، Solovyan S.V. کتابچه راهنمای خودآموز برای کار بر روی کامپیوتر شخصی- ک.: جونیور، 1380.- 560 ص.، ill.

من و سرپرستم در حال تهیه یک مونوگراف کوچک در مورد پردازش تصویر هستیم. تصمیم گرفتم فصلی را به جامعه habra ارائه کنم که به الگوریتم های فشرده سازی تصویر اختصاص دارد. از آنجایی که گنجاندن یک فصل کامل در یک پست سخت است، تصمیم گرفتم آن را به سه پست تقسیم کنم:
1. روش های فشرده سازی داده ها.
2. فشرده سازی تصویر بدون اتلاف.
3. فشرده سازی تصویر از دست رفته.
در زیر می توانید اولین پست این مجموعه را بخوانید.

در حال حاضر، تعداد زیادی الگوریتم فشرده سازی بدون تلفات وجود دارد که می توان آنها را به دو گروه بزرگ تقسیم کرد:
1. الگوریتم های جریان و فرهنگ لغت. این گروه شامل الگوریتم‌های خانواده‌های RLE (رمزگذاری طول اجرا)، LZ* و غیره است. یکی از ویژگی‌های همه الگوریتم‌های این گروه این است که هنگام رمزگذاری، اطلاعاتی درباره فرکانس نمادها در پیام مورد استفاده قرار نمی‌گیرد. اما اطلاعاتی در مورد توالی هایی که قبلاً با آنها مواجه شده بود.
2. الگوریتم های فشرده سازی آماری (آنتروپی). این گروه از الگوریتم‌ها با بهره‌گیری از فرکانس‌های نامنظم که کاراکترهای مختلف در یک پیام رخ می‌دهند، اطلاعات را فشرده می‌کنند. الگوریتم های این گروه شامل الگوریتم های رمزگذاری حسابی و پیشوندی (با استفاده از Shannon-Fanno، Huffman، secant trees) می باشد.
که در گروه جداگانهالگوریتم های تبدیل اطلاعات را می توان متمایز کرد. الگوریتم های این گروه مستقیماً اطلاعات را فشرده نمی کنند، اما استفاده از آنها فشرده سازی بیشتر با استفاده از الگوریتم های جریان، فرهنگ لغت و آنتروپی را بسیار ساده می کند.

الگوریتم های جریان و فرهنگ لغت

اجرای رمزگذاری طول

رمزگذاری طول اجرا (RLE) یکی از ساده ترین و رایج ترین الگوریتم های فشرده سازی داده ها است. در این الگوریتم، دنباله ای از کاراکترهای تکرار شده با یک کاراکتر و تعداد دفعات تکرار آن جایگزین می شود.
به عنوان مثال، رشته "AAAAAA" که به 5 بایت نیاز دارد تا ذخیره شود (با فرض اینکه یک بایت برای ذخیره یک کاراکتر اختصاص داده شده است)، می تواند با "5A" که شامل دو بایت است جایگزین شود. بدیهی است که این الگوریتم هر چه تعداد تکرارها طولانی تر باشد، موثرتر است.

عیب اصلی این الگوریتم راندمان بسیار پایین آن در توالی هایی از کاراکترهای غیر تکراری است. به عنوان مثال، اگر دنباله "ABABAB" (6 بایت) را در نظر بگیریم، پس از اعمال الگوریتم RLE به "1A1B1A1B1A1B" (12 بایت) تبدیل می شود. روش های مختلفی برای حل مشکل تکرار نشدن کاراکترها وجود دارد.

بیشترین روش سادهاصلاح زیر است: بایتی که تعداد تکرارها را رمزگذاری می کند باید اطلاعاتی را نه تنها در مورد تعداد تکرارها، بلکه در مورد حضور آنها نیز ذخیره کند. اگر بیت اول 1 باشد، 7 بیت بعدی تعداد تکرارهای کاراکتر مربوطه را نشان می دهد و اگر بیت اول 0 باشد، 7 بیت بعدی نشان دهنده تعداد کاراکترهایی است که باید بدون تکرار گرفته شوند. اگر "ABABAB" را با استفاده از این اصلاح رمزگذاری کنیم، "-6ABABAB" (7 بایت) دریافت خواهیم کرد. بدیهی است که تکنیک پیشنهادی می‌تواند کارایی الگوریتم RLE را در توالی‌های کاراکتر غیر تکراری به‌طور قابل‌توجهی افزایش دهد. اجرای رویکرد پیشنهادی در فهرست 1 نشان داده شده است:

  1. نوع
  2. تابع RLEEncode(InMsg: ShortString): TRLEEncodedString;
  3. MatchFl: Boolean;
  4. MatchCount: shortint ;
  5. EncodedString: TRLEEncodedString;
  6. N, i: بایت ;
  7. شروع
  8. N:=0;
  9. SetLength(EncodedString، 2 * طول (InMsg) );
  10. while length(InMsg) >= 1 do
  11. شروع
  12. MatchFl : = (طول(InMsg) > 1 ) و (InMsg[ 1 ] = InMsg[ 2 ] ) ;
  13. MatchCount: = 1;
  14. در حالی که (MatchCount<= 126 ) and (MatchCount < length(InMsg) ) and ((InMsg[ MatchCount] = InMsg[ MatchCount + 1 ] ) = MatchFl) do
  15. MatchCount: = MatchCount + 1;
  16. اگر MatchFl پس
  17. شروع
  18. N:=N+2;
  19. EncodedString[ N - 2 ] : = MatchCount + 128 ;
  20. EncodedString[ N - 1 ] : = ord ( InMsg[ 1 ] ) ;
  21. دیگر
  22. شروع
  23. اگر MatchCount<>طول (InMsg) سپس
  24. MatchCount : = MatchCount - 1 ;
  25. N : = N + 1 + MatchCount;
  26. EncodedString[ N - 1 - MatchCount] : = - MatchCount + 128 ;
  27. برای i: = 1 به MatchCount انجام دهید
  28. EncodedString[ N - 1 - MatchCount + i] : = ord (InMsg[ i] ) ;
  29. پایان ؛
  30. حذف (InMsg, 1, MatchCount) ;
  31. پایان ؛
  32. SetLength(EncodedString, N) ;
  33. RLEEcode := EncodedString;
  34. پایان ؛

رمزگشایی یک پیام فشرده بسیار ساده است و به یک گذر از پیام فشرده خلاصه می شود، لیست 2 را ببینید:
  1. نوع
  2. TRLEEncodedString = آرایه از بایت ;
  3. تابع RLEDecode (InMsg: TRLEEncodedString) : ShortString;
  4. RepeatCount: shortint ;
  5. i, j: کلمه ;
  6. OutMsg: ShortString;
  7. شروع
  8. OutMsg : = "" ;
  9. من := 0 ;
  10. در حالی که من< length(InMsg) do
  11. شروع
  12. RepeatCount : = InMsg[ i] - 128 ;
  13. i : = i + 1 ;
  14. اگر RepeatCount< 0 then
  15. شروع
  16. RepeatCount := abs (RepeatCount) ;
  17. برای j : = i به i + RepeatCount - 1 do
  18. OutMsg : = OutMsg + chr (InMsg[j] ) ;
  19. i : = i + RepeatCount;
  20. دیگر
  21. شروع
  22. برای j : = 1 تا RepeatCount انجام دهید
  23. OutMsg : = OutMsg + chr (InMsg[ i] ) ;
  24. i : = i + 1 ;
  25. پایان ؛
  26. پایان ؛
  27. RLDecode := OutMsg;
  28. پایان ؛

روش دوم برای افزایش کارایی الگوریتم RLE استفاده از الگوریتم‌های تبدیل اطلاعات است که مستقیماً داده‌ها را فشرده نمی‌کنند، اما آن را به شکلی راحت‌تر برای فشرده‌سازی می‌آورند. به عنوان نمونه ای از چنین الگوریتمی، جایگشت BWT را که به نام مخترعان تبدیل Burrows-Wheeler نامگذاری شده است، در نظر خواهیم گرفت. این جایگشت خود کاراکترها را تغییر نمی دهد، بلکه فقط ترتیب آنها را در رشته تغییر می دهد، در حالی که زیر رشته های تکراری پس از اعمال جایگشت در گروه های متراکم جمع آوری می شوند که با استفاده از الگوریتم RLE بسیار بهتر فشرده می شوند. تبدیل مستقیم BWT به مراحل زیر انجام می شود:
1. اضافه کردن به رشته اصلی یک کاراکتر انتهای خط خاص که در هیچ جای دیگری وجود ندارد.
2. به دست آوردن همه جایگشت های چرخه ای رشته اصلی.
3. مرتب سازی رشته های دریافتی به ترتیب واژگان.
4. برگرداندن آخرین ستون ماتریس حاصل.
اجرای این الگوریتم در فهرست 3 نشان داده شده است.
  1. پایان
  2. EOMsg = "|" ;
  3. تابع BWTEcode(InMsg: ShortString): ShortString;
  4. OutMsg: ShortString;
  5. LastChar:ANSIchar;
  6. N, i: کلمه ;
  7. شروع
  8. InMsg : = InMsg + EOMsg;
  9. N : = طول (InMsg) ;
  10. ShiftTable[ 1 ] : = InMsg;
  11. برای i: = 2 تا N انجام دهید
  12. شروع
  13. LastChar : = InMsg[ N] ;
  14. InMsg : = LastChar + copy(InMsg, 1 , N - 1 );
  15. ShiftTable[ i] : = InMsg;
  16. پایان ؛
  17. مرتب سازی (ShiftTable) ;
  18. OutMsg : = "" ;
  19. برای i: = 1 تا N انجام دهید
  20. OutMsg : = OutMsg + ShiftTable[ i] [ N] ;
  21. BWTEcode := OutMsg;
  22. پایان ؛

ساده ترین راه برای توضیح این تبدیل با یک مثال خاص است. بیایید رشته «PINEAPPLE» را بگیریم و توافق کنیم که انتهای کاراکتر رشته، کاراکتر «|» باشد. تمام جایگشت های چرخه ای این رشته و نتیجه مرتب سازی واژگانی آنها در جدول آورده شده است. 1.

آن ها نتیجه تبدیل مستقیم رشته "|NNAAAC" است. به راحتی می توان فهمید که این رشته با الگوریتم RLE بسیار بهتر از رشته اصلی فشرده شده است، زیرا این شامل دنباله های طولانی از حروف تکراری است.
یک اثر مشابه را می توان با استفاده از تبدیل های دیگر به دست آورد، اما مزیت تبدیل BWT این است که برگشت پذیر است، اگرچه تبدیل معکوس پیچیده تر از تبدیل مستقیم است. برای بازیابی رشته اصلی، باید مراحل زیر را انجام دهید:
یک ماتریس خالی با اندازه n*n ایجاد کنید که n تعداد کاراکترهای پیام رمزگذاری شده است.
سمت راست ترین ستون خالی را با پیام رمزگذاری شده پر کنید.
ردیف های جدول را به ترتیب واژگانی مرتب کنید.
مراحل 2-3 را تا زمانی که ستون های خالی وجود دارد تکرار کنید.
رشته ای را که به کاراکتر انتهای خط ختم می شود برگردانید.

اجرای تبدیل معکوس در نگاه اول دشوار نیست و یکی از گزینه های پیاده سازی در لیست 4 نشان داده شده است.

  1. پایان
  2. EOMsg = "|" ;
  3. تابع BWTDecode(InMsg: ShortString): ShortString;
  4. OutMsg: ShortString;
  5. ShiftTable: آرایه ShortString.
  6. N, i, j: کلمه ;
  7. شروع
  8. OutMsg : = "" ;
  9. N : = طول (InMsg) ;
  10. SetLength(ShiftTable، N + 1) ;
  11. برای i: = 0 تا N انجام دهید
  12. ShiftTable[ i] : = "" ;
  13. برای i: = 1 تا N انجام دهید
  14. شروع
  15. برای j := 1 تا N انجام دهید
  16. ShiftTable[j] : = InMsg[j] + ShiftTable[j] ;
  17. مرتب سازی (ShiftTable) ;
  18. پایان ؛
  19. برای i: = 1 تا N انجام دهید
  20. اگر ShiftTable[ i] [ N] = EOMsg پس
  21. OutMsg : = ShiftTable[ i] ;
  22. حذف (OutMsg, N, 1 ) ;
  23. BWTDecode := OutMsg;
  24. پایان ؛

اما در عمل، کارایی به الگوریتم مرتب سازی انتخاب شده بستگی دارد. بدیهی است که الگوریتم های بی اهمیت با پیچیدگی درجه دوم تأثیر بسیار منفی بر عملکرد خواهند داشت، بنابراین توصیه می شود از الگوریتم های کارآمد استفاده کنید.

پس از مرتب سازی جدول به دست آمده در مرحله هفتم، باید ردیفی از جدول را انتخاب کنید که با کاراکتر «|» ختم می شود. به راحتی می توان فهمید که این تنها خط است. که ما با استفاده از یک مثال خاص به تبدیل BWT نگاه کردیم.

به طور خلاصه می توان گفت که مزیت اصلی الگوریتم های گروه RLE سادگی و سرعت عمل (از جمله سرعت رمزگشایی) است و عیب اصلی آن ناکارآمدی در مجموعه کاراکترهای تکرار نشدنی است. استفاده از جایگشت های خاص، کارایی الگوریتم را افزایش می دهد، اما زمان اجرا (به ویژه رمزگشایی) را نیز بسیار افزایش می دهد.

فشرده سازی دیکشنری (الگوریتم های LZ)

گروه الگوریتم‌های فرهنگ لغت، برخلاف الگوریتم‌های گروه RLE، تعداد تکرار کاراکترها را رمزگذاری نمی‌کند، بلکه توالی‌هایی از کاراکترها را که قبلاً با آنها مواجه شده‌اند، رمزگذاری می‌کنند. در حالی که الگوریتم های مورد بررسی در حال اجرا هستند، جدولی به صورت پویا با لیستی از توالی هایی که قبلاً با آنها مواجه شده و کدهای مربوط به آنها ایجاد می شود. این جدول اغلب دیکشنری نامیده می شود و گروه مربوط به الگوریتم ها دیکشنری نامیده می شود.

ساده ترین نسخه الگوریتم دیکشنری در زیر توضیح داده شده است:
فرهنگ لغت را با تمام کاراکترهای ظاهر شده در رشته ورودی مقداردهی کنید.
در فرهنگ لغت طولانی ترین دنباله (S) را که با ابتدای پیام رمزگذاری شده مطابقت دارد پیدا کنید.
کد دنباله یافت شده را چاپ کنید و آن را از ابتدای پیام رمزگذاری شده حذف کنید.
اگر به انتهای پیام نرسید، کاراکتر بعدی را بخوانید و Sc را به فرهنگ لغت اضافه کنید، به مرحله 2 بروید. در غیر این صورت خارج شوید.

به عنوان مثال، فرهنگ لغت تازه اولیه برای عبارت "CUCKOOKOOKUSHONKOOKUPILAKAHOOD" در جدول نشان داده شده است. 3:

در طول فرآیند فشرده سازی، فرهنگ لغت با دنباله هایی که در پیام یافت می شود تکمیل می شود. روند به روز رسانی فرهنگ لغت در جدول آورده شده است. 4.

هنگام توصیف الگوریتم، توصیف وضعیتی که فرهنگ لغت به طور کامل پر شده است، عمدا حذف شد. بسته به نوع الگوریتم، رفتار متفاوتی ممکن است: پاک کردن کامل یا جزئی فرهنگ لغت، توقف پر کردن فرهنگ لغت، یا گسترش فرهنگ لغت با افزایش متناظر در ظرفیت کد. هر یک از این رویکردها دارای معایب خاصی هستند. به عنوان مثال، توقف دوباره پر کردن فرهنگ لغت می تواند منجر به وضعیتی شود که در آن فرهنگ لغت دنباله هایی را که در ابتدای رشته فشرده شده رخ می دهد، ذخیره می کند، اما بعداً رخ نمی دهد. در عین حال، تمیز کردن فرهنگ لغت می تواند منجر به حذف توالی های مکرر شود. اکثر پیاده سازی های مورد استفاده، هنگام پر کردن فرهنگ لغت، شروع به نظارت بر سطح فشرده سازی می کنند و زمانی که به زیر یک سطح معین کاهش می یابد، فرهنگ لغت دوباره ساخته می شود. در مرحله بعد، ساده ترین پیاده سازی را در نظر خواهیم گرفت که به روز رسانی فرهنگ لغت را پس از پر شدن متوقف می کند.

ابتدا، بیایید دیکشنری را به عنوان رکوردی تعریف کنیم که نه تنها زیررشته‌هایی را که با آن مواجه می‌شویم، بلکه تعداد زیررشته‌های ذخیره شده در فرهنگ لغت را نیز ذخیره می‌کند:

زیر دنباله هایی که قبلاً با آنها روبرو شده اند در آرایه Words ذخیره می شوند و کد آنها اعداد بعدی در این آرایه است.
همچنین عملکردهای جستجو در فرهنگ لغت و افزودن به فرهنگ لغت را تعریف خواهیم کرد:

  1. پایان
  2. MAX_DICT_LENGTH = 256 ;
  3. تابع FindInDict(D: TDictionary; str: ShortString) : integer ;
  4. r:integer;
  5. i:integer ;
  6. fl:boolean ;
  7. شروع
  8. r : = - 1 ;
  9. اگر D. WordCount > 0 سپس
  10. شروع
  11. i := D. WordCount ;
  12. fl := false ;
  13. در حالی که (نه fl) و (i >= 0 ) انجام می دهند
  14. شروع
  15. i : = i - 1 ;
  16. fl : = D. کلمات [ i] = str;
  17. پایان ؛
  18. پایان ؛
  19. اگر fl سپس
  20. r := i;
  21. FindInDict: = r;
  22. پایان ؛
  23. رویه AddToDict(var D: TDictionary; str: ShortString) ;
  24. شروع
  25. اگر D. WordCount< MAX_DICT_LENGTH then
  26. شروع
  27. D. WordCount: = D. WordCount + 1;
  28. SetLength(D. Words، D. WordCount) ;
  29. د. کلمات [ D. WordCount - 1 ] : = str;
  30. پایان ؛
  31. پایان ؛

با استفاده از این توابع، فرآیند رمزگذاری طبق الگوریتم توصیف شده را می توان به صورت زیر پیاده سازی کرد:
  1. تابع LZWEncode(InMsg: ShortString): TEncodedString;
  2. OutMsg: TEncodedString;
  3. tmpstr: ShortString;
  4. د: دیکشنری;
  5. i، N: بایت ;
  6. شروع
  7. SetLength(OutMsg, length(InMsg) ) ;
  8. N:=0;
  9. InitDict(D) ;
  10. while length(InMsg) > 0 do
  11. شروع
  12. tmpstr : = InMsg[ 1 ] ;
  13. در حالی که (FindInDict(D, tmpstr) >= 0 ) و (length(InMsg) > length(tmpstr) انجام می دهند
  14. tmpstr : = tmpstr + InMsg[ طول(tmpstr) + 1 ] ;
  15. if FindInDict(D، tmpstr)< 0 then
  16. delete(tmpstr, length(tmpstr) , 1 );
  17. OutMsg[N] : = FindInDict(D, tmpstr) ;
  18. N:=N+1;
  19. delete(InMsg, 1 , length(tmpstr) );
  20. اگر طول (InMsg) > 0 باشد
  21. AddToDict(D, tmpstr + InMsg[ 1 ] );
  22. پایان ؛
  23. SetLength(OutMsg، N) ;
  24. LZWEcode := OutMsg;
  25. پایان ؛

نتیجه رمزگذاری، تعداد کلمات در فرهنگ لغت خواهد بود.
فرآیند رمزگشایی به رمزگشایی مستقیم کدها کاهش می یابد و نیازی به انتقال فرهنگ لغت ایجاد شده نیست؛ کافی است در هنگام رمزگشایی دیکشنری به همان روشی که در هنگام رمزگذاری مقداردهی اولیه شود. سپس فرهنگ لغت به طور مستقیم در طول فرآیند رمزگشایی با الحاق دنباله قبلی و نماد فعلی به طور کامل بازیابی می شود.

تنها مشکل در شرایط زیر امکان پذیر است: زمانی که لازم است دنباله ای را رمزگشایی کنید که هنوز در فرهنگ لغت نیست. به راحتی می توان فهمید که این تنها زمانی امکان پذیر است که نیاز به استخراج زیر رشته ای باشد که باید در مرحله فعلی اضافه شود. این به این معنی است که رشته فرعی الگوی cSc را برآورده می کند، یعنی. با همان شخصیت شروع می شود و به پایان می رسد. در این مورد، cS رشته فرعی است که در مرحله قبل اضافه شده است. وضعیت در نظر گرفته شده تنها زمانی است که نیاز به رمزگشایی خطی است که هنوز اضافه نشده است. با توجه به موارد فوق، می توانیم گزینه زیر را برای رمزگشایی یک رشته فشرده پیشنهاد کنیم:

  1. تابع LZWDecode(InMsg: TEncodedString): ShortString;
  2. د: دیکشنری;
  3. OutMsg, tmpstr: ShortString;
  4. من: بایت
  5. شروع
  6. OutMsg : = "" ;
  7. tmpstr : = "" ;
  8. InitDict(D) ;
  9. برای i: = 0 به طول (InMsg) - 1 انجام دهید
  10. شروع
  11. if InMsg[ i] >= D. WordCount سپس
  12. tmpstr : = D. کلمات [ InMsg[ i - 1 ] ] + D. کلمات [ InMsg[ i - 1 ] ] [ 1 ]
  13. دیگر
  14. tmpstr : = D. کلمات [ InMsg[ i] ] ;
  15. OutMsg : = OutMsg + tmpstr;
  16. اگر من > 0 پس
  17. AddToDict(D, D. Words [ InMsg[ i - 1 ] ] + tmpstr[ 1 ] );
  18. پایان ؛
  19. LZWDecode := OutMsg;
  20. پایان ؛

از مزایای الگوریتم های دیکشنری می توان به راندمان فشرده سازی بیشتر آنها در مقایسه با RLE اشاره کرد. با این حال، باید آن را درک کرد استفاده واقعیاین الگوریتم ها با برخی مشکلات پیاده سازی همراه هستند.

کدگذاری آنتروپی

کدگذاری با استفاده از درختان شانون-فانو

الگوریتم شانون-فانو یکی از اولین الگوریتم های فشرده سازی است که توسعه یافته است. این الگوریتم مبتنی بر ایده نمایش کاراکترهای متداول تر با استفاده از کدهای کوتاه تر است. علاوه بر این، کدهای به دست آمده با استفاده از الگوریتم شانون-فانو دارای خاصیت پیشوندی هستند: i.e. هیچ کدی آغاز هیچ کد دیگری نیست. ویژگی پیشوند تضمین می کند که رمزگذاری یک به یک است. الگوریتم ساخت کدهای شانون-فانو در زیر ارائه شده است:
1. حروف الفبا را به دو قسمت تقسیم کنید که احتمالات کل نمادها تا حد امکان به یکدیگر نزدیک باشد.
2. 0 را به کد پیشوند قسمت اول کاراکترها اضافه کنید، 1 را به کد پیشوند قسمت دوم کاراکترها اضافه کنید.
3. برای هر قسمت (که شامل حداقل دو کاراکتر است)، مراحل 1-3 را به صورت بازگشتی انجام دهید.
الگوریتم شانون-فانو علیرغم سادگی نسبی آن خالی از اشکال نیست که مهمترین آنها کدگذاری غیربهینه است. اگرچه پارتیشن در هر مرحله بهینه است، اما الگوریتم یک نتیجه بهینه را در کل تضمین نمی کند. برای مثال در نظر بگیرید خط بعدی: "AAAABVGDEZH". درخت شانون-فانو مربوطه و کدهای به دست آمده بر اساس آن در شکل 1 ارائه شده است. 1:

بدون استفاده از رمزگذاری، پیام 40 بیت (به شرط اینکه هر کاراکتر با 4 بیت کدگذاری شده باشد) و با استفاده از الگوریتم شانون-فانو 4*2+2+4+4+3+3+3=27 بیت اشغال خواهد شد. حجم پیام 32.5 درصد کاهش یافته است، اما در زیر نشان خواهیم داد که این نتیجه می تواند به طور قابل توجهی بهبود یابد.

کد نویسی با درختان هافمن

الگوریتم کدگذاری هافمن، که چندین سال پس از الگوریتم شانون-فانو توسعه یافت، همچنین دارای خاصیت پیشوندی است، و علاوه بر این، حداقل افزونگی ثابت شده است، که همان چیزی است که توزیع بسیار گسترده آن را تعیین می کند. برای بدست آوردن کد هافمن از الگوریتم زیر استفاده کنید:
1. تمام کاراکترهای الفبا به عنوان گره های آزاد نشان داده می شوند و وزن گره متناسب با فراوانی کاراکتر در پیام است.
2. از مجموعه گره های آزاد، دو گره با حداقل وزن انتخاب شده و یک گره جدید (والد) با وزنی برابر با مجموع وزن گره های انتخاب شده ایجاد می شود.
3. گره های انتخاب شده از لیست آزاد حذف می شوند و گره والد ایجاد شده بر اساس آنها به این لیست اضافه می شود.
4. مراحل 2-3 تکرار می شود تا زمانی که بیش از یک گره در لیست آزاد وجود داشته باشد.
5. بر اساس درخت ساخته شده، به هر کاراکتر الفبا یک کد پیشوند اختصاص داده می شود.
6. پیام با کدهای دریافتی کدگذاری می شود.

بیایید همان مثالی را در مورد الگوریتم شانون-فانو در نظر بگیریم. درخت هافمن و کدهای به دست آمده برای پیام "AAAABVGDEJ" در شکل ارائه شده است. 2:

به راحتی می توان محاسبه کرد که حجم پیام کدگذاری شده 26 بیت خواهد بود که کمتر از الگوریتم شانون-فانو است. به طور جداگانه، شایان ذکر است که به دلیل محبوبیت الگوریتم هافمن، در حال حاضر گزینه های زیادی برای کدنویسی هافمن وجود دارد، از جمله کدگذاری تطبیقی ​​که نیازی به ارسال فرکانس های نمادی ندارد.
از جمله معایب الگوریتم هافمن، بخش قابل توجهی از مشکلات مربوط به پیچیدگی پیاده سازی است. استفاده از نمادهای متغیرهای واقعی برای ذخیره فرکانس ها با کاهش دقت همراه است، بنابراین در عمل اغلب از متغیرهای عدد صحیح استفاده می شود، اما از آنجایی که وزن گره های والد به طور مداوم در حال رشد است، دیر یا زود سرریز اتفاق می افتد. بنابراین، با وجود سادگی الگوریتم، اجرای صحیح آن همچنان می تواند مشکلاتی را به خصوص برای الفبای بزرگ ایجاد کند.

کد نویسی با درخت های تابع سکانت

کدنویسی با استفاده از توابع secant الگوریتمی است که توسط نویسندگان ایجاد شده است که به شما امکان می دهد کدهای پیشوندی را بدست آورید. این الگوریتم مبتنی بر ایده ساختن یک درخت است که هر گره آن حاوی یک تابع سکانس است. برای توضیح بیشتر الگوریتم، لازم است چندین تعاریف ارائه شود.
یک کلمه دنباله ای منظم از m بیت است (عدد m را کلمه ظرفیت می گویند).
یک لفظ سکانسی یک جفت از مقدار رقمی شکل است. مثلاً لفظ (4،1) به این معناست که بیت 4 کلمه باید 1 باشد. اگر شرط لفظ برآورده شود، لفظ صادق و در غیر این صورت نادرست است.
سکانت k بیتی مجموعه ای از k حرف است. اگر همه لفظ ها درست باشند، خود تابع secant درست است، در غیر این صورت نادرست است.

درخت به گونه ای ساخته شده است که هر گره الفبا را تا حد امکان به قسمت های نزدیک تقسیم می کند. در شکل شکل 3 نمونه ای از درخت سکنت را نشان می دهد:

درخت سکنت توابع در مورد کلیکدگذاری بهینه را تضمین نمی کند، اما به شدت ارائه می دهد سرعت بالاکار به دلیل سادگی کار در گره ها.

کدگذاری حسابی

کدگذاری حسابی یکی از بهترین هاست راه های موثرفشرده سازی اطلاعات برخلاف الگوریتم هافمن، کدگذاری حسابی اجازه می دهد تا پیام ها با آنتروپی کمتر از 1 بیت در هر کاراکتر رمزگذاری شوند. زیرا بیشتر الگوریتم‌های کدگذاری حسابی توسط پتنت‌ها محافظت می‌شوند؛ فقط ایده‌های اساسی در زیر توضیح داده خواهد شد.
فرض کنید الفبای مورد استفاده شامل N نماد a_1،…،a_N، با فرکانس‌های p_1،…، p_N است. سپس الگوریتم کدگذاری حسابی به شکل زیر خواهد بود:
) را به عنوان یک نیم فاصله کاری در نظر بگیرید)

بهترین مقالات در این زمینه