فشرده سازی داده یکی از شاخه های مشهور علوم کامپیوتر می باشد. در طول سال های متمادی تحقیقات بسیار وسیعی در این زمینه انجام شده است و برای فشرده سازی داده ها روش ها و استانداردهای زیادی تدوین گردیده است. فشرده سازی داده ها می تواند روشی برای کاهش میزان فضای مورد نیاز جهت ذخیره سازی مقادیری از داده ها تلقی گردد.
فشرده سازی داده ها با صرفه های اقتصادی فراوانی قدم در دنیای کامپیوتر نهاد، که از آن جمله کاهش فضای ذخیره سازی مورد نیاز، کاهش استفاده از پهنای باند شبکه ای، قیمت و میزان هزینه لازم جهت انتقال یک مقدار داده از یک محل به محلی دیگر می باشد.
سیستم های فشرده سازی چه با کاهش کیفی و از دست دادن محدودی از داده ها همراه باشد یا نباشد، به دنبال کاهش حجم محیط ذخیره سازی اطلاعات هستند. میزان کاهش کیفی اطلاعات ناشی از فشرده سازی به بسیاری از عوامل و از جمله کاربرد آن بستگی دارد.
اکثر فایل های کامپیوتری با محتویات متفاوت دارای افزونگی اطلاعات می باشند. این نوع فایل ها دارای اطلاعات تکراری زیادی می باشند. برنامه های فشرده سازی اطلاعات، اطلاعات تکراری موجود در فایل ها را براساس الگوریتم های مربوطه حذف می نمایند. پس از تشخیص اطلاعات تکراری، صرفا اطلاعات تکراری یک بار در فایل تکرار و در سایر موارد، از مکانیزم های خاصی برای عدم تکرار استفاده می گردد.
میزان کاهش ظرفیت یک فایل، به عوامل متعددی نظیر نوع فایل، اندازه فایل و روش فشرده سازی بستگی دارد. در اکثر زبان های طبیعی، حروف و کلمات الگوهای مناسبی را به صورت جداگانه و یا ترکیبی ایجاد می نمایند. بدین ترتیب فشرده سازی فایل های متنی نتایج بسیار مطلوبی را به دنبال خواهد داشت. فایل های متنی اغلب پس از فشرده سازی به میزان پنجاه درصد و یا بیشتر، کاهش ظرفیت خواهند داشت. اکثر زبان های برنامه نویسی نیز به دلیل استفاده از مجموعه ای از دستورات که به صورت تکراری استفاده می شوند، دارای افزونگی اطلاعات بوده و پس از فشرده سازی نتایج رضایتبخشی را به دنبال خواهند داشت. فایل هایی که دارای حجم بالایی از اطلاعات منحصر بفرد هستند مانند فایل های گرافیک و یا فایل های 3MB، به دلیل عدم وجود الگوهای تکرار شونده، به خوبی فشرده نمی شوند.
در صورتی که فایلی دارای تعداد زیادی الگوی تکرار شونده باشد، میزان افزونگی اطلاعات موجود در فایل به طور محسوسی ظرفیت فایل را افزایش خواهد داد. بدین ترتیب در زمان فشرده سازی این نوع از فایل ها، با توجه به وجود الگوهای تکرار شونده، ظرفیت فایل در حد قابل قبولی کاهش پیدا خواهد کرد.
میزان فشرده سازی اطلاعات، به الگوریتم استفاده شده توسط برنامه فشرده سازی نیز بستگی دارد. بدیهی است استفاده از یک الگوریتم با کارایی بالا، نتایج مثبتی را در رابطه با فشرده سازی به ارمغان خواهد آورد.
لازم نیست در یک پژوهش حتما و الزاما به نتیجه مثبتی درباره روش مورد بررسی برسیم. چه بسا پژوهش هایی هستند که در انتها مشخص می کند که زمینه در نظر گرفته شده بهترین گزینه موجود نیست. اما نتایج پژوهش در جهت توسعه آن موضوع مورد استفاده دانشمندان قرار می گیرد. از آنجا که الگوریتم Lempel – Ziv یک روش قدیمی برای کد کردن است، پس بهتر است که با الگوریتم های سطح پایین و قدیمی مقایسه شود و از آنجا که کد هافمن هنوز برای بسیاری از فایل ها مورد استفاده قرار می گیرد، بهترین گزینه برای مقایسه با الگوریتم Lempel – Ziv می باشد.
در این پروژه که با هدف بررسی ساختاری الگوریتم کدینگ Lempel – Ziv جهت ایجاد تحولی در روش های فشرده سازی رایج انجام می پذیرد، پس از بررسی، این الگوریتم توسط نرم افزار MATLAB به صورت کاربردی پیاده سازی و اجرا می شود.