این الگوریتم فشرده سازی رو کسی می دونی ؟
Printable View
این الگوریتم فشرده سازی رو کسی می دونی ؟
سلام
LZW مخفف Lempel-Ziv-Welch است.
الگوريتم و شرح:
http://en.wikipedia.org/wiki/Lempel-Ziv-Welch
http://marknelson.us/1989/10/01/lzw-data-compression/
پيادهسازي در جاوا:
http://www.codeproject.com/KB/java/lzw.aspx
اجتناب از آن:
http://www.frugalcorner.com/lzw/lzwfree.html
در مورد این الگوریتم / واقعا توضیحات مختصر بود. ولی می شد چیز هایی رو هم فهمید.
سوال1 : این نوع از الگوریتم > فشرده سازی بر روی محتوای فیل را دارند یا اصل فایل ( همراه Header و ...)؟
سوال2 : LZW دارای یک Knowledge base هست که یک سری از حروف به طور پیش فرض در داخل آن است.این Table چگونه و در کجای فایل فشرده شده قرار می گیره؟
جوابی براش نیست
خواهشا پست ها رو رها نکنید.
به نظر می یاد کسی این تایپیک رو سر نمی زنه!!!!
من به اين الگوريتم احتياج دارم لطفا راهنمايي كنيد نحوه دي كد كردن
در مورد فشرده سازی:
w = NIL;ذر ابتدا می بایست فایل رو به صورت کاراکتر به کاراکتر بخوانید. 2 متغییر اصلی به نام های w و k وجود دارد.
while ( read a character k )
{
if wk exists in the dictionary
w = wk;
else
add wk to the dictionary;
output the code for w;
w = k;
}
شرح الگوریتم:
در ابتدا w=Null است و در یک حلقه هر کاراکتری که خوانهده می شود در متغییر k قرار می گیرد. در شرط IF بررسی می شود که w+k در دیکشنری وجود دارد یا نه! ( دیکشنری یک فضا در memory شماست . مثلا یک آرایه نامحدود که آرایه شما به صورت دو بُعدی است. یک بعد آن کد اسکی و در مقابل آن یعنی بُعد دوم اون رشته کاراکتری)
حالا بعد از بررسی w+k ، اگر در دیکشنری رشته W+k وجود داشته باشد w=w+k می شود. در غیر این صورت w+k در انتهای دیکشنری اضافه می شود و یک کد درج میشود( کدی که باید قرار گیرد مثلا از 256 شروع می شود ، چرا که از کد 0 تا 255 به صورت رزرو شده هستند مثل کاراکتر های a-z یا ...)
در خط output the code for w; مقدار w در فایل ذخیره شده و در پایان w=k می شود و این روند تا پایان فایل ادامه می یابد.
نکته: این الگوریتم (LZW) یک الگوریتم با طول ثابت است. یعنی باید بزرگترین کد در دیکشنری یافته شده و طول مابقی کاراکتر ها بر اساس تعداد بیتهایی که بزرگترین عدد به خود اختصاص می دهد ، قرار گیرد. این مطلب رو با یه مثال توضیح می دهم. فرض کنید که در دیگشنری مقادیر AB با کد 256 وجود دارد. 256 دارای 9 بیت است . حال باید تمامی رشته های موجود در دیکشنری مثلا کاراکتر A که 8 بیت است به صورت 9 بیت در فایل Comperssion ذخیره شود
از مطالبتون استفاده کردم ... من می خوام الگوریتم lzw به زبان C# پیاده سازی کنم . اما نمی دونم باید از کجا شروع کنم .. مثلا اطلاعات تویه دیکشنری باید فرق گذاشت بین حروف بزرگ یا کوچیک یا نه ؟ .....