تالار گفتمان مانشت
راهنمایی در مورد حل الگوریتم هافمن - نسخه‌ی قابل چاپ

راهنمایی در مورد حل الگوریتم هافمن - vahidir - 26 خرداد ۱۳۹۳ ۰۷:۵۴ ب.ظ

سلام دوستان لطفا بگین چگونه میتونم این الگوریتم رو حل کنم (به صورت گراف)

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


دوستان لطفا لینک ندین

RE: راهنمایی در مورد حل الگوریتم هافمن - Morris - 26 خرداد ۱۳۹۳ ۰۹:۵۲ ب.ظ

در هر مرحله، ابتدا Sort می نماییم، سپس دو گره با کمترین وزن را با هم ادغام می کنیم و گره ای جدید تولید می کنیم که وزن آن برابر وزن آن دو است و این دو گره را فرزندان گره جدید قرار می دهیم و گره جدید را به گره های باقی مانده اضافه می کنیم.

فکر می کنم اینطوری می شه

[تصویر:  282104_nspf.png]

RE: راهنمایی در مورد حل الگوریتم هافمن - vahidir - 27 خرداد ۱۳۹۳ ۱۲:۴۲ ق.ظ

چرا بعد از ۷ وقتی ۵ رو جمع کردین طرف راست گره ۷ ننوشتین چرا سمت راست نوشتین؟
چرا دو عدد ۱۱ رو باهم انتخاب و یه گره تشکیل دادین ؟
چرا عدد ۱۹ رو با ۱۲ جمع کردین و سمت راست گره نوشتین؟ چرا با ۲۲ جمع نکردین

اینا سوال هایی بودن که برام مطرح شدن اگاه امکان داره یکم توضیح بدین دقیق که چیکار کردین

RE: راهنمایی در مورد حل الگوریتم هافمن - Morris - 27 خرداد ۱۳۹۳ ۰۷:۱۷ ق.ظ

چرا بعد از ۷ وقتی ۵ رو جمع کردین طرف راست گره ۷ ننوشتین چرا سمت راست نوشتین؟
سوال شما مبهمه ولی یه حدس می زنم منظور شما اینه که چرا گره ۷ فرزند راست گره ۱۲ است. علت این موضوع این است که در ابتدا پیش از اینکه گره ۱۲ ایجاد شود، گره ۵ قبل از ۷ قرار داشته است و ما نیز به همین ترتیب این دو را فرزندان ۱۲ قرار دادیم.

چرا دو عدد ۱۱ رو باهم انتخاب و یه گره تشکیل دادین ؟
چون در مرحله سوم این دو گره ۱۱ کوچکترین گره ها بودند و ما در هر مرحله باید کوچکترین گره ها را با هم ادغام کنیم تا در انتهای کار در سطوح پایین تری قرار گیرند. به طور کلی در این الگوریتم هر گره ای که وزن کمتری دارد باید در درخت نهایی در سطوح پایین تری باشد.

چرا عدد ۱۹ رو با ۱۲ جمع کردین و سمت راست گره نوشتین؟ چرا با ۲۲ جمع نکردین
دلیل آن این است که در این مرحله از اجرا ۱۲ و ۱۹ کوچکترین گره های از نظر وزنی بودند.

RE: راهنمایی در مورد حل الگوریتم هافمن - vahidir - 27 خرداد ۱۳۹۳ ۰۴:۱۹ ب.ظ

(۲۷ خرداد ۱۳۹۳ ۰۷:۱۷ ق.ظ)Morris نوشته شده توسط:  چرا بعد از ۷ وقتی ۵ رو جمع کردین طرف راست گره ۷ ننوشتین چرا سمت راست نوشتین؟
سوال شما مبهمه ولی یه حدس می زنم منظور شما اینه که چرا گره ۷ فرزند راست گره ۱۲ است. علت این موضوع این است که در ابتدا پیش از اینکه گره ۱۲ ایجاد شود، گره ۵ قبل از ۷ قرار داشته است و ما نیز به همین ترتیب این دو را فرزندان ۱۲ قرار دادیم.

چرا دو عدد ۱۱ رو باهم انتخاب و یه گره تشکیل دادین ؟
چون در مرحله سوم این دو گره ۱۱ کوچکترین گره ها بودند و ما در هر مرحله باید کوچکترین گره ها را با هم ادغام کنیم تا در انتهای کار در سطوح پایین تری قرار گیرند. به طور کلی در این الگوریتم هر گره ای که وزن کمتری دارد باید در درخت نهایی در سطوح پایین تری باشد.

چرا عدد ۱۹ رو با ۱۲ جمع کردین و سمت راست گره نوشتین؟ چرا با ۲۲ جمع نکردین
دلیل آن این است که در این مرحله از اجرا ۱۲ و ۱۹ کوچکترین گره های از نظر وزنی بودند.

مرسی از اینکه سوال منو پاسخ دادین تنها چیزی که برام مبهمه

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

اینه چرا عدد ۱۹ رو سمت چپ گره ۳۱ نوشتین چرا سمت راست گره ۳۱ ننوشتین میتونیتیم ۱۲ رو سمت چپ و ۱۹ رو سمت راست بنویسیم
یا همینطور عدد ۲۲ رو سمت چپ ۴۴ ننوشتیم؟ تنها مشکل من اینه