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

صفحه‌ها: ۱ ۲
رسم درخت هافمن - tarane1992 - 14 دى ۱۳۹۲ ۰۳:۳۲ ب.ظ

سلام
من سوالم اینه وقتی داده ها رو از نزولی به صعودی مرتب میکنم و بعد کوچکتراهارو با هم میگیرم بعد زیر درخت چپ و راست رو درخت من با جوابای سوالا فرق میکنه سوال من اینه ترتیب زیر درخت چپ رو راست مهمه ؟ اشکال کار من کجاست؟
چون از یه طرف کد گذاری کنم شاخه های راستو یک و چپو صفر میدم جواب من برعکس جواب .SadSad
مثلا
a=50
b=10
c=25
d=28
e=32
درختی که من رسم میکنم a در زیرشاخه چپ میشه ولی جواب a زیرشاخه راسته...Blush
خوب بگید من کجای کارم اشتباهه؟یعنی اگر درست بکشی درخت باید یکتا باشه؟

RE: رسم درخت هافمن - samieh - 14 دى ۱۳۹۲ ۰۳:۳۸ ب.ظ

(۱۴ دى ۱۳۹۲ ۰۳:۳۲ ب.ظ)tarane1992 نوشته شده توسط:  سلام
من سوالم اینه وقتی داده ها رو از نزولی به صعودی مرتب میکنم و بعد کوچکتراهارو با هم میگیرم بعد زیر درخت چپ و راست رو درخت من با جوابای سوالا فرق میکنه سوال من اینه ترتیب زیر درخت چپ رو راست مهمه ؟ اشکال کار من کجاست؟
چون از یه طرف کد گذاری کنم شاخه های راستو یک و چپو صفر میدم جواب من برعکس جواب .SadSad
مثلا
a=50
b=10
c=25
d=28
e=32
درختی که من رسم میکنم a در زیرشاخه چپ میشه ولی جواب a زیرشاخه راسته...Blush
خوب بگید من کجای کارم اشتباهه؟یعنی اگر درست بکشی درخت باید یکتا باشه؟

خانوم منم مشکل شما رو دارم
یکی کمک کنه لطفاً

RE: رسم درخت هافمن - H3NGAM3H - 14 دى ۱۳۹۲ ۰۴:۱۷ ب.ظ


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

با توضیح ایشونم به جواب نمیرسید ؟

RE: رسم درخت هافمن - Somayeh_Y - 14 دى ۱۳۹۲ ۰۴:۵۹ ب.ظ

آره ترتیب زیر درخت راست و چپ مهمه
من حلش کردم، a زیر درخت راست شد.
اول مرتب می کنیم:
b=10
c=25
d=28
e=32
a=50
مرحله اول b و c با هم ادغام میشن. بعد از مرتب سازی داریم
d=28
e=32
درخت b ,c با ریشه ۳۵
a=50
مرحله ۲ : d , e ادغام می شوند، بعد از مرتب سازی داریم

درخت b ,c با ریشه ۳۵
a=50
درخت e , d با ریشه ۶۰
مرحله ۳: a با زیر درخت قبلش ادغام میشه، اینجا چون a بزرگتر از ریشه زیر درخت (۳۵) هست ، سمت راست قرار میگیره.
e,d =60
b,c,a=85
و در نهایت دو زیر درخت بالا با هم ترکیب میشوند. شکل رو به همین ترتیب بکشید می بینید که a در زیر شاخه سمت راست قرار میگیره.

اگه توضیحات نامفهومه شکل بکشم.

RE: رسم درخت هافمن - tarane1992 - 14 دى ۱۳۹۲ ۰۸:۲۶ ب.ظ

(۱۴ دى ۱۳۹۲ ۰۴:۵۹ ب.ظ)Somayeh_Y نوشته شده توسط:  آره ترتیب زیر درخت راست و چپ مهمه
من حلش کردم، a زیر درخت راست شد.
اول مرتب می کنیم:
b=10
c=25
d=28
e=32
a=50
مرحله اول b و c با هم ادغام میشن. بعد از مرتب سازی داریم
d=28
e=32
درخت b ,c با ریشه ۳۵
a=50
مرحله ۲ : d , e ادغام می شوند، بعد از مرتب سازی داریم

درخت b ,c با ریشه ۳۵
a=50
درخت e , d با ریشه ۶۰
مرحله ۳: a با زیر درخت قبلش ادغام میشه، اینجا چون a بزرگتر از ریشه زیر درخت (۳۵) هست ، سمت راست قرار میگیره.
e,d =60
b,c,a=85
و در نهایت دو زیر درخت بالا با هم ترکیب میشوند. شکل رو به همین ترتیب بکشید می بینید که a در زیر شاخه سمت راست قرار میگیره.

اگه توضیحات نامفهومه شکل بکشم.
توضیحاتتون که عالی بود فقط شکلشو اگر براتون زحمتی نداره بکشید ببینم با من یکی هست.
یک دنیا ازتون ممنونم.Shy

RE: رسم درخت هافمن - soheila2012 - 14 دى ۱۳۹۲ ۰۹:۱۳ ب.ظ

من که اینطوری رسم کردم. حالا نمیدونم اشکال داره یا نه؟!
[تصویر:  234885_27574904684509921272.jpg]

RE: رسم درخت هافمن - Somayeh_Y - 14 دى ۱۳۹۲ ۰۹:۲۲ ب.ظ

توی این درختی که کشیدید جای زیر درخت راست(ریشه =۶۰) و چپ (ریشه =۸۵) رو عوض کنید درست میشه.

RE: رسم درخت هافمن - soheila2012 - 14 دى ۱۳۹۲ ۰۹:۲۵ ب.ظ

(۱۴ دى ۱۳۹۲ ۰۹:۲۲ ب.ظ)Somayeh_Y نوشته شده توسط:  توی این درختی که کشیدید جای زیر درخت راست(ریشه =۶۰) و چپ (ریشه =۸۵) رو عوض کنید درست میشه.

بله
حواسم به رعایت درخت نبود.

RE: رسم درخت هافمن - tarane1992 - 15 دى ۱۳۹۲ ۰۹:۴۸ ب.ظ

سمیه خانم میشه شکلتونو بکشید ببینم درست کشیدم یا نه....

ممنونم از شما.Smile

RE: رسم درخت هافمن - hoomanab - 16 دى ۱۳۹۲ ۰۲:۰۶ ب.ظ

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

Sent from my SM-T210R using Tapatalk

در ضمن در حالتی که وزن زیردرخت چپ و راست برابره، زیر درخت بزرگتر سمت چپ قرار میگیره

Sent from my SM-T210R using Tapatalk

RE: رسم درخت هافمن - tarane1992 - 16 دى ۱۳۹۲ ۰۷:۱۳ ب.ظ

ممنون اره جوابم یکی میشه به هر حال ممنونم از شما....Shy

RE: رسم درخت هافمن - hosshah - 17 دى ۱۳۹۲ ۱۲:۵۰ ق.ظ

درخت هم اینطوری رسم میشه
حجم عکس زیاده اگه لود نشد دانلود کنید
[تصویر:  235377_14873843951806131175.png]

RE: رسم درخت هافمن - soheila2012 - 20 دى ۱۳۹۲ ۰۹:۰۸ ب.ظ

با توجه به تعریف شما پس این جواب پارسه چرا ایطوری شده؟!!
رسم درخت رعایت نشد ۵۸ چرا سمت راست قرار نگرفت؟
[تصویر:  236249_85190172908330542091.jpg]

RE: رسم درخت هافمن - hosshah - 21 دى ۱۳۹۲ ۱۲:۱۹ ق.ظ

(۲۰ دى ۱۳۹۲ ۰۹:۰۸ ب.ظ)soheila2012 نوشته شده توسط:  با توجه به تعریف شما پس این جواب پارسه چرا ایطوری شده؟!!
رسم درخت رعایت نشد ۵۸ چرا سمت راست قرار نگرفت؟
[تصویر:  236249_85190172908330542091.jpg]
درخت هافمن یکتا نیست ولی هر درخت هافمنی لزوما بهینه نیست یعنی منظورم اینه که ما میخوایم درختی که میکشیم به عضوی که فراوانیه بیشتری داری کد با تعداد بیت کمتر اختصاص بده برای همین سعی میکنیم اونایی که فراوانیشون بیشتره بالاتر قرار بگیرن یا به عبارتی عمقشون کمتر باشه
این کارهایی که ما انجام میدیم برای رسیدن به درخت هافمن بهینه هستش
البته برامون مهم نیست که چه بیت هایی به یک عضو داده میشه بلکه برامون تعداد بیت مهم هستش و هدف سوالای هافمن هم همینه. شما اگه اونجوری که گفته شد درخت رو بکشی صد در صد تعداد بیت های هر عضو بهینه هستش ولی این درختی که کشیدین یکتا نیست
hoseng هستمWink

RE: رسم درخت هافمن - soheila2012 - 21 دى ۱۳۹۲ ۱۲:۲۷ ق.ظ

اِ عزیز مایی که!! سلام!
.....
خب بهینه نباشه جواب هم متفاوت میشه توی این مساله نیاز داریم که گره در راست باشه یا چپ.