Sourena's personal page
جايگزينی فرکانسی (Frequency Substitution)
خوب اين روش همونجور که از اسمش پيداست بر اساس تکرار کاراکتر ها يا همون فرکانس اونها (فرکانس يعنی ميزان تکرار) کار ميکنه.خوب حالا يه مقدار در مورد الگوريتم صحبت ميکنيم و بعد هم يک پياده سازی به زبون cpp طبق معمول هميشه براتون ميزارم که حال کنيد.
توضيح الگوريتم :
همونطور که گفتم اين روش بسيار ساده هستش ولی خوب زياد کارايی خاصی نداره. اساس کار به اين صورت هستش که ميآييم کاراکتری که بيشترين تعداد تکرار رو داره جاش رو با کاراکتر با کد اسکی 0 عوض ميکنيم و کاراکتری که از لحاظ تکرار در مرتبه دوم هستش جايش رو با کاراکتر با کد اسکی يک عوض ميکنيم و به همين ترتيب ادامه ميديم تا آخر.خوب حالا اينايی که گفتم يعنی چه؟؟؟؟
3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6,2,6,4,3,3,8,3,2,7,9 همينطور که ميبينيد متن بلا از عداد 1 تا 9 تشکيل شده که البته اهميتی هم نداره و از هر چيزی ميتونست باشه.
حالا تو جدول زير تعداد تکرار هر کاراکتر رو مشخص ميکنيم.
حالا سمبل ها رو بر اساس تعداد تکرارشون مرتب ميکنيم.
خوب حالا بر اساس اين جدول جديد متن ما به صورت زير در مياد
0,7,3,7,4,2,1,5,4,0,4,6,2,8,2,0,1,0,6,3,5,1,5,3,0,0,6,0,1,8,2 خوب همينطور که ميبينيد هيچ خاصيت فشرده شدنی اينجا وجود نداره ولی خوب يه اتفاق جالب افتاده اونم اينکه مجموع يا ميانگين متن رو کاهش داديم به اين صورت که متن اصلی اگه حساب کنيم دارای مجموع 150 هستش در صورتی که متن کد شده دارای ميانگين 96 هستش.
خوب من يه پياده سازی به زبون cpp هم براتون اينجا ميزارم که البته هم با dev-cpp تحت windows کامپايل ميشه هم با ++g تحت لينوکس ubuntu کامپايل ميشه با هر کدوم که راحتی با همون کار کنين.
روش دکد کردن هم که بسيار ساده هستش کافيه شما يه جدول 256 تايی اول فايل کد شده ذخيره بکنين تا موقع دکد کردن با کمک اون جدول خيلی راحت فايل اصلی رو بازيافت کنيد.
|
فهرست
صفحه اصلی (Compression) فشرده سازی Huffman CodingArithmetic Coding Delta Coding Frequency Substitution LZSS Coding LZW Coding Rice (Golomb) Coding Run Length Encoding Prediction by partial matching Dynamic Markov Compression bitio Library Burrows-Wheeler Transform
مقالات آموزشی
|
Designed By S.M
Last Update : 12/2/2011