شنبه 27 آبان 1396 | Saturday 18 th of November 2017 صفحه اصلی گروه الکترونیکی کامپیوتر
ساختار اموزش الگوریتم haffman در نرم افزار swish max

الگوریتم هافمن را نیز مانند بیشتر الگوریتم های این پروژه از روی مثال کتاب "تحلیل و طراحی الگوریتم ها" که منبع اصلی این پروژه می باشد  ، اموزش می دهیم.

پس زمینه و قالب کلی کار ، مانند دیگر الگوریتم ها بوده و از تکرار توضیحات مربوط به انها       می پرهیزیم. در بالای صفحه ، اطلاعات مر بوط به الگوریتم هافمن ، را در کادر و جعبه متن قرار   می دهیم و در پانل  timelineدر فریم های مرحله اول ،  placeمی کنیم .

کاراکترها و تعداد تکرار کاراکتر ها را در جعبه متنی نوشته و در پایین کادر توضیحات قرار        می دهیم. سپس طبق روال الگوریتم ، باید هر یک از  کاراکترها را به همراه تعداد تکرارشان به یک گروه تبدیل کرده ، و به اصطلاح جنگل می سازیم. برای این کار ، دو جعبه متن برای هر کاراکتر در صفحه درج می کنیم. یکی برای نام کاراکتر و دیگری برای تعداد کاراکترهای ان. برای هر کاراکتر با استفاده از ابزار رسم مربع در پانل ابزار ، کادری رسم می کنیم. سپس اشیاء مربوط به هر کاراکتر یعنی دو جعبه متن و کادر را انتخاب و با انتخاب گزینه ی  group as groupبه طور جداگانه گروه بندی می کنیم.

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

مرحله بندی الگوریتم ، شامل ادغام این کاراکترها و تبدیل انها به ساختار  درختی الگوریتم هافمن است . برای این مرحله ، ابتدا  گروه دو کاراکتر اول که طبق مثال به هم ادغام میشود را انتخاب    می کنیم. سپس با ابزار  motion path tool  دو گروه را با هم گرفته و به وسط صفحه کاری  می کشیم. فعلا این افکت را در پانل  timelineسکانس اصلی بر روی این دو گروه اعمال می کنیم. سپس در پانل  timelineبر روی پایان افکت  motionکلیک می کنیم تا دو گروه در مکان انتهای افکت ، یا همان مقصد انتقال قرار گیرند . سپس در همین حالت ، از طریق ابزار رسم خطوط در پانل ابزار و ابزار line toolدو خط را بالای گروه رسم کرده و شاخه های درخت را می کشیم. سپس دایره ای را در بالای این خطوط با استفاده از ابزار ellipse tool  در پانل ابزار می کشیم . و جعبه متنی را حاوی مقدار مجموع دو ریشه در ان قرار می دهیم . سپس دو جعبه متن بر روی خطوط درج می کنیم. در جعبه متن یال سمت راست مقدار یک و در جعبه متن یال سمت چپ مقدار صفر را قرار می دهیم.  دو گروه کاراکتر و خطوط و دایره و جعبه متن ریشه و یالها را با  هم انتخاب و بر  روی  ان کلیک  راست کرده و  از طریق منوی میانبر  به  یک   movie clipتبدیل می کنیم. سپس این movie clipرا در فریم های مربوط به مرحله اول placeمی کنیم.  movie clip  را باز کرده و افکت  motionدو کاراکتر را به اول پانل timelineانتقال می دهیم. چون این افکت را در پانل سکانس اصلی اعمال کرده ایم به طور پیش فرض وقتی ان را به  movie clipتبدیل می کنیم در همان شماره فریم قرار می گیرد . به این ترتیب در مرحله اول این دو گروه کاراکتر با هم یک ساختار درختی را تشکیل می دهند .

در مراحل بعدی نیز بر طبق مثال ، به ترتیب کاراکترها را انتخاب کرده و با رسم خطوط و گره ریشه ساختار درختی ان را تشکیل می دهیم. سپس افکت حرکت (motion)  بر روی انها اعمال می کنیم  و انها را به محل مناسب از ساختار درختی در صفحه انتقال می دهیم. و اشیاء مربوط به هر مرحله را به movie clipتبدیل کرده و در فریم های مربوط به همان مرحله place  میکنیم.

مرحله بندی این الگوریتم نیز مانند بسیاری از الگوریتم های این پروژه به صورت فریم های 5 تایی دسته بندی شده است. هر 5 فریم را در خط زمان پانل timelineسکانس اصلی یک مرحله در نظر گرفته و بعد از ان افکت توقف یا همان stop  را قرار می دهیم.  سپس در رویداد  on press()کلید های "مرحله بعد" و "مرحله قبل" با استفاده از دستور gotoandplay(fram)بین این مراحل پیمایش می کنیم.

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

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

جدول مذکور را به همراه جعبه متن ها و همچنین دایره هایی رسم شده بر روی یالهای درخت را انتخاب و در یک movieclipقرار داده و در مرحله اخر placeمی کنیم

Compatability by:
آخرین به روز رسانی سایت: سه شنبه, 22 اسفند 1391 - 00:26