۰
subtitle
ارسال: #۱
علوم کامپیوتر - سراسری ۹۰
با عرض سلام
دوستان یه راهنمایی در مورد سوال زیر می فرمایید لطفا ؟
با سپاس و قدر دانی
دوستان یه راهنمایی در مورد سوال زیر می فرمایید لطفا ؟
با سپاس و قدر دانی
(۳۰ فروردین ۱۳۹۶ ۰۱:۰۳ ق.ظ)msour44 نوشته شده توسط: سلام
n عدد صحیح داریم ولی ۱۵ عدد متمایز از ۱ تا ۱۵ که این n عدد به صورت مرتب شده هستند(مثلا یک ارایه مرتب)
سوال گفته به کمک جستجویی دودویی ابتدا و انتهای تکرار عدد ۸ را پیدا می کنیم یعنی محل اولین و اخرین رخداد عدد ۸ که این کار به این صورت انجام می شود مثلا یکبار7.9 را جستجو میکنیم که جستجو بین اولین رخداد ۸ و اخرین رخداد ۷ متوقف می شود ویکبار هم 8.1 را جستجو می کنیم تا محل اخرین عدد ۸ را بیابیم توجه شود که n عدد صحیح است و ارایه هم مرتب. پس با دو مقایسه محل اولین و اخرین رخداد عدد ۸ را پیدا کردیم(کار با اندیس ها) با انجام یک تفاضل ساده روی اندیس محل های پیدا شده تعداد تکرار عدد ۸ بدست می اید حالا همین کار را برای عدد ۴ در بازه قبل از محل اولین رخداد ۸ تا ابتدای ارایه انجام می دهیم و همچنین عدد ۱۲ در بازه راستی در واقع برای یافتن تعداد تکرار هر عدد در بدترین حالت ۲ بار جستجویی دودویی را انجام میدهیم ۱۵ عدد داشتیم پس در بدترین حالت ۳۰ بار البته احتمالا می توانیم با هر بار جستجو دو محل برای دو عدد پیدا کنیم ولی خوب زیاد تاثیری روی مرتبه ندارد و باز تعداد تکرار ثابت است پس هزینه کلی این الگوریتم همان هزینه جستجو یعنی O(lgn) است گزینه ۲
(۳۰ فروردین ۱۳۹۶ ۱۲:۲۴ ق.ظ)*tarannom* نوشته شده توسط:(29 فروردین ۱۳۹۶ ۰۷:۵۴ ب.ظ)alimamala نوشته شده توسط: با عرض سلام
دوستان یه راهنمایی در مورد سوال زیر می فرمایید لطفا ؟
با سپاس و قدر دانی
اگه میشه پاسخشو بذارید....
(۳۰ فروردین ۱۳۹۶ ۰۱:۰۳ ق.ظ)msour44 نوشته شده توسط: سلام
n عدد صحیح داریم ولی ۱۵ عدد متمایز از ۱ تا ۱۵ که این n عدد به صورت مرتب شده هستند(مثلا یک ارایه مرتب)
سوال گفته به کمک جستجویی دودویی ابتدا و انتهای تکرار عدد ۸ را پیدا می کنیم یعنی محل اولین و اخرین رخداد عدد ۸ که این کار به این صورت انجام می شود مثلا یکبار7.9 را جستجو میکنیم که جستجو بین اولین رخداد ۸ و اخرین رخداد ۷ متوقف می شود ویکبار هم 8.1 را جستجو می کنیم تا محل اخرین عدد ۸ را بیابیم توجه شود که n عدد صحیح است و ارایه هم مرتب. پس با دو مقایسه محل اولین و اخرین رخداد عدد ۸ را پیدا کردیم(کار با اندیس ها) با انجام یک تفاضل ساده روی اندیس محل های پیدا شده تعداد تکرار عدد ۸ بدست می اید حالا همین کار را برای عدد ۴ در بازه قبل از محل اولین رخداد ۸ تا ابتدای ارایه انجام می دهیم و همچنین عدد ۱۲ در بازه راستی در واقع برای یافتن تعداد تکرار هر عدد در بدترین حالت ۲ بار جستجویی دودویی را انجام میدهیم ۱۵ عدد داشتیم پس در بدترین حالت ۳۰ بار البته احتمالا می توانیم با هر بار جستجو دو محل برای دو عدد پیدا کنیم ولی خوب زیاد تاثیری روی مرتبه ندارد و باز تعداد تکرار ثابت است پس هزینه کلی این الگوریتم همان هزینه جستجو یعنی O(lgn) است گزینه ۲
(۳۰ فروردین ۱۳۹۶ ۰۹:۳۶ ق.ظ)*tarannom* نوشته شده توسط:به نظر میرسیه رابطه بازگشتی دو پارامتری نیاز داریم یک n همان تعداد عدد صحیح و دیگری بازه ۱ تا ۱۵ همان محدوده اعداد متمایز پس برای این سوال رابطه بازگشتی می تونه به شکل زیر باشه(30 فروردین ۱۳۹۶ ۰۱:۰۳ ق.ظ)msour44 نوشته شده توسط: سلام
n عدد صحیح داریم ولی ۱۵ عدد متمایز از ۱ تا ۱۵ که این n عدد به صورت مرتب شده هستند(مثلا یک ارایه مرتب)
سوال گفته به کمک جستجویی دودویی ابتدا و انتهای تکرار عدد ۸ را پیدا می کنیم یعنی محل اولین و اخرین رخداد عدد ۸ که این کار به این صورت انجام می شود مثلا یکبار7.9 را جستجو میکنیم که جستجو بین اولین رخداد ۸ و اخرین رخداد ۷ متوقف می شود ویکبار هم 8.1 را جستجو می کنیم تا محل اخرین عدد ۸ را بیابیم توجه شود که n عدد صحیح است و ارایه هم مرتب. پس با دو مقایسه محل اولین و اخرین رخداد عدد ۸ را پیدا کردیم(کار با اندیس ها) با انجام یک تفاضل ساده روی اندیس محل های پیدا شده تعداد تکرار عدد ۸ بدست می اید حالا همین کار را برای عدد ۴ در بازه قبل از محل اولین رخداد ۸ تا ابتدای ارایه انجام می دهیم و همچنین عدد ۱۲ در بازه راستی در واقع برای یافتن تعداد تکرار هر عدد در بدترین حالت ۲ بار جستجویی دودویی را انجام میدهیم ۱۵ عدد داشتیم پس در بدترین حالت ۳۰ بار البته احتمالا می توانیم با هر بار جستجو دو محل برای دو عدد پیدا کنیم ولی خوب زیاد تاثیری روی مرتبه ندارد و باز تعداد تکرار ثابت است پس هزینه کلی این الگوریتم همان هزینه جستجو یعنی O(lgn) است گزینه ۲
اگه میشه رابطه بازگشتیشم بگید رو اونم یه توضیح مختصری بدید.....ممنون...
(۳۰ فروردین ۱۳۹۶ ۰۲:۱۱ ب.ظ)*tarannom* نوشته شده توسط: حاج اقا مرسی واقعا خیلی خوب میگیداول دقت کنید که بازگشتی ما دو پارامتری است پارامتر اول تعداد کل اعداد و پارامتر دوم مشخص کننده اعداد متمایز![]()
یه سوال! با توجه به اینکه تو سوال گفته ارایه رو دو قسمت میکنیم و با تقسیم غلبه میریم :چه وقت باز گشتیو براساس (T(n/2 مینویسیم اینجا؟! اگه بازه ی اعداد صحیحو به ما نداده بود؟ یا اگه نگفته بود اعداد مرتبن؟
نمیدونم منظورمو متوجه میشید یا نه؟میخوام بگم چه زمای با دوتا ( T(n/2 به اضافه ی log n بازگشت میریم که مرتبه بشه تتای n؟
الان تو این رابطه که گفتید چون یه بازه ی مشخص داریم مرتبه ی هر بازگشتی شد تتای ۱؟
(۳۰ فروردین ۱۳۹۶ ۰۴:۵۹ ب.ظ)*tarannom* نوشته شده توسط: آخراش دیگه سرگیجه گرفتمخواهش می کنم دوست گرامی
میگم فرقی داشت اگه نمیگفت مثلا از ۸ شروع کنید؟! میومدیم واسه عدد ۱ تا ۱۵ دودویی جستجو میکردیم.اونوقت چی؟
فکر کنم اگه دم دست بودم زندم نمیذاشتید
(۳۰ فروردین ۱۳۹۶ ۰۷:۲۰ ب.ظ)msour44 نوشته شده توسط:خیلیییییی مرسیییییی(30 فروردین ۱۳۹۶ ۰۴:۵۹ ب.ظ)*tarannom* نوشته شده توسط: آخراش دیگه سرگیجه گرفتمخواهش می کنم دوست گرامی
میگم فرقی داشت اگه نمیگفت مثلا از ۸ شروع کنید؟! میومدیم واسه عدد ۱ تا ۱۵ دودویی جستجو میکردیم.اونوقت چی؟
فکر کنم اگه دم دست بودم زندم نمیذاشتید
اگر خوب موضوع را درک نکردید دلیلش توضیحات بد و دانش ناچیز منه و مطمئنا خالی از اشکال نیست.
برای ۱ تا ۱۵ نه زیاد فرقی نمیکنه مثلا اگر به ترتیب ۱ تا ۱۵ رو تعداد تکرارشو پیدا کنیم تو همون رابطه بازگشتی مقدار n1 صفر می شود و مقدار n2 بستگی به تعداد عدد جستجو در گام قبلی دارد. و روی مرتبه تاثیری ندارد ولی اگر بجای ۱۵ مقدار √n یا logn بوداین روش تقسیم و غلبه کارایی را نسبت به ترتیب های دیگر افزایش میداد حداقل تو ضریب. ویا اگر عدد بزرگی بود این روش با توجه به پارامتر دوم (بازه) شرط پایان بهتری داشت مثل T(7,[1..7]) که نیاز به محاسبه نداشت و مشخص بود تعداد تکرار هر عدد از ۱ تا ۷ برابر یک است در واقع طراح با توجه به وقت کنکور مسئله رو با ثابت کردن تعداد اعداد متمایز ساده کرده و هدف درک استفاده از جستجویی دودویی در یافتن تعداد تکرار اعداد است.