انتخاب، تعریف و بیان مسئله تحقیق
رکن اصلى هر تحقیق علمى را مرحله تشکیل انتخاب، تعریف و بیان مسئله تحقق مىدهد؛ زیرا محقق کلیه فعالیتهاى تحقیقاتى خود را بر پایه آن شکل مىدهد. در این مسئله تحقیق مشخص مىشود و محقق متوجه مىشود که ناشناخته و مجهول او چیست و چه چیزى را باید معلوم کند.
او در این مرحله ابعاد مسئله را مورد بررسى قرار مىدهد تا آن را بخوبى تعریف کند و امکان تحقیق درباره آن برایش میسر گردد. محقق براى پیدا کردن شناخت مقدماتى از مسئله و ویژگىهاى آن، ناگزیر است ادبیات و پیشینه آن را مورد مطالعه قرار دهد تا بدین وسیله بتواند متغیرهاى احتمالى را شناسایى کند و براساس آن امکان تدوین فرضیههاى تحقیق فراهم گردد. همچنین، از روشهاى کار تحقیقات مشابه اطلاع حاصل نموده، تجارب مفید آنها را در تحقیق خود به کار ببندد.
پس از این اقدامات محقق تقریباً شناخت کافى از ماهیت، ابعاد و قلمرو مسئله به دست آورده و متغیرهاى علّى و توصیفى دخیل در مسئله را شناسایى کرده و تصویرى از روشهاى کار براى خود ساخته است، آنگاه نسبت به تعریف و بیان مسئله تحقیق براساس ماهیت و ویژگىهاى آن اقدام مىکند. با این کار، مسئله بخوبى مورد بررسى قرار مىگیرد، هرچند ممکن است وقت و توان زیادى صرف آن شود. اگر محقق این مرحله اساسى را جدى نگیرد و با بىحوصلگى و بىدقتى از کنار آن بگذرد و نتواند شالوده مناسبى براى فعالیتهاى بعدى پایهریزى کند، نخواهد توانست تحقیق را به نحو مطلوب به انجام برساند.
انتخاب و تعیین حدود مسئله تحقیق
با توجه به منابع ایجاد مسئله و موضوعات تحقیقاتی، محقق براساس علاقه و شوق شخصى و نیز احساس نیازى که خودش یا جامعه به حل مسئلهاى و کشف مجهولى دارد، مىتواند یکى از آنها را انتخاب نماید. علاقه او در انتخاب مسئله باعث مىشود که با پشتکار، جدیت و شور و شوق زیاد تحقیق علمى را انجام دهد؛ توجه به احساس نیاز باعث مىشود که امکانات و حمایتهاى مالى و بودجهاى براى تحقیق فراهم شود؛ زیرا بدون در نظر گرفتن هر یک از آنها امکان تحقق تحقیق علمى به شکل مطلوب بعید به نظر مىرسد.
شامل فایل ورد و اسلاید پاور پوینت
کشوری که می خواهد بر سلاحهای کشتار جمعی دست یابد در درجه اول از خود بپرسد که دستیابی به این سلاحها، بویژه سلاحهای هسته ای در مجموع برای آن کشور خوب است یابد. برای یافتن پاسخ درست باید جنبه های اقتصادی، سیاسی، زیست بومی، و نیز امنیتی را مورد بررسی قرار داد. همه این مسائل با یک استراتژی امنیتی موفق و سالم مربوط است و بر آن اثر می گذارد.
«مسائل اقتصادی»
یک اقتصاد سالم نه تنها ثبات سیاسی و اجتماعی داخلی را تقویت می کند بلکه به کشور اجازه می دهد که سلاحهای لازم را تولید کند و نیروهای مسلح نیرومندی را که از نظر استراتژیکی سودمند باشند و به وجود آورد یک موضوع اساسی برای کشوری که در اندیشه برنامه سلاحهای هسته ای، شیمیایی، یا میکروبی است این است که چنین فعالیتی به رشد و رفاه اقتصادی کمک می کند یا به آن آسیب می رساند. ممکن است بعضی از کشورها بخواهند این سلاحها و فن شناسی مربوط به آن را صادر کنند تا مقداری از هزینه های مربوط به پژوهش و تولید و به کارگیری آن جبران شود.
مساله هشت وزیر از جمله مسائل پرمخاطب مباحث طراحی الگوریتم است. ۸ مهره وزیر رو روی صفحه شطرنج چنان بچینید که نتونن همدیگه رو تهدید کنن.
برای افرادی که با بازی شطرنج آشنایی ندارن:
وزیر مهره ای از مهره های بازی شطرنجه که می تونه در تمامی 8 جهت هر تعداد خانه – تا زمانی که مهره ای مانع نباشه – حرکت کنه و اگه در یکی از این خانه ها مهره حریف قرار داشته باشه تهدیدش کنه.
مساله هشت وزیر : ما مساله رو در حالت کلی در نظر می گیریم. یعنی زمانی که ابعاد صفحه شطرنج n در n و تعداد مهره ها n هستش. ( n > 3 ) روشهای مختلفی برای پیدا کردن جواب وجود داره. یکی از این روشها چیدن تصادفی مهره ها روی صفحه شطرنجه! به عبارت دیگه n مهره رو به صورت تصادفی در خانه های مختلف صفحه قرار می دیم و بررسی می کنیم که آیا شرط مساله رو برآورده می کنن یا نه؟ این روش بسیار سریع ما رو به جواب می رسونه. اما ایرادی که داره نمی شه مطمئن بود بشه به همه حالتهای چینش دست پیدا کرد. در صفحه 8 در 8 شطرنج این مساله 92 جواب مختلف داره. شما ممکنه روش تصادفی رو هزار بار به کار ببرید، اما نتونید همه 92 حالت ممکنه رو به دست بیارید. این روش زمانی مفیده که پیدا کردن یه جواب برای ما کافی باشه.
در این دسته روشها مهره ها رو یکی یکی و به صورت بازگشتی روی صفحه طوری می چینیم که مطمئن باشیم با مهره های قبلی تداخل نداره و شرط مساله برآورده می شه. معمولا از سطر اول صفحه شروع می کنیم به قرار دادن مهره ها. پر واضحه که هر سطر فقط می تونه یه مهره رو تو خودش جا بده. مهره سطر دوم رو طوری قرار می دیم که توسط مهره سطر اول تهدید نشه. برای این کار خانه های مختلفی از سطر رو می شه انتخاب کرد. برای نظم داشتن کارهامون فرض می کنیم همیشه انتخاب خانه ها از سمت چپ سطر شروع می شه. به عبارت دیگه با شروع از سمت چپ سطر اولین خانه ای که شرط رو برآورده کنه انتخاب می کنیم. به همین ترتیب سطرهای بعدی رو هم می چینیم. اگر به سطری رسیدیم که بر اساس چیدمان سطرهای قبلی هیچ خانه امنی برای مهره وجود نداشت ( یعنی همه خانه ها توسط مهره های قبلی تهدید می شدن ) یه مرحله به عقب بر می گردیم و مهره سطر قبل رو جابجا می کنیم. این کار هم با حرکت مهره به اولین خانه سمت چپ موقعیت فعلی که شرط رو برآورده کنه، انجام می شه. با ادامه دادن این روال و با جابجا کردن مهره ها به صورت منظم و بازگشتی تمامی حالتهای ممکنه به دست می یان.
برای پیاده سازی چنین الگوریتمی و تشخیص اینکه چه خانه هایی از سطر امن هستن روشهای مختلفی وجود داره. ساده ترینشون اینه که هر بار تمامی خانه هایی رو که امکان تهدید شدن از اونها وجود داره بررسی کنیم تا از قرار نداشتن مهره وزیر در اونها مطمئن باشیم. اما این روش اصلا کارا و بهینه نیست.
روش دیگه تعریف کردن صفحه شطرنج به صورت یه آرایه n در n هستش که خونه های امن و غیر امن با علامتگذاری مشخص می شن. هر بار که مهره ای رو صفحه قرار می گیره تمام خونه هایی که توسط این مهره تهدید می شن به صورت غیر امن علامتگذاری می شن. به این ترتیب می شه فهمید که هر خونه با توجه به چینش مهره های قبلی امن هست یا نه؟ اما این روش هم معایبی داره که باعث می شه به روش سوم رجوع کنیم. برای آشنایی با این معایب کافیه سعی کنید کد برنامه رو بنویسید!
در روش سوم که من ازش استفاده کردم، برای علامتگذاری خانه های امن و غیر امن از شیوه دیگه ای بهره می بریم. به این ترتیب که اقطار راست به چپ، چپ به راست و ستونها با شماره هایی مشخص می شن که کار علامتگذاری رو بسیار ساده می کنن. این روش بدون شک از کاراترین روشهای رسیدن به جواب مساله ماست. هم سرعت اجرای بالایی داره و هم حافظه مصرفی بسیار کم!
کدی که به زبان ++C درباره این مساله نوشته شده با استفاده از روش سوم تعداد جوابهای ممکن – و نه خود جوابها – برای مقادیر مختلف n رو مشخص می کنه. به عنوان مثال اگر n رو 8 وارد کنید خروجی برنامه 92 خواهد بود. توصیه می کنم برای nهای بزرگ برنامه رو امتحان نکنید! اگر n رو 16 وارد کنید بعد از گذشتن زمان زیادی عدد 14772512 روی صفحه نمایش چاپ می شه. یعنی در صفحه شطرنج 16 در 16 حدود ۱۵ میلیون حالت مختلف برای چیدمان صحیح وجود داره!!
مساله هشت وزیر از جمله مسائل پرمخاطب مباحث طراحی الگوریتم است. ۸ مهره وزیر رو روی صفحه شطرنج چنان بچینید که نتونن همدیگه رو تهدید کنن.
برای افرادی که با بازی شطرنج آشنایی ندارن:
وزیر مهره ای از مهره های بازی شطرنجه که می تونه در تمامی 8 جهت هر تعداد خانه – تا زمانی که مهره ای مانع نباشه – حرکت کنه و اگه در یکی از این خانه ها مهره حریف قرار داشته باشه تهدیدش کنه.
مساله هشت وزیر : ما مساله رو در حالت کلی در نظر می گیریم. یعنی زمانی که ابعاد صفحه شطرنج n در n و تعداد مهره ها n هستش. ( n > 3 ) روشهای مختلفی برای پیدا کردن جواب وجود داره. یکی از این روشها چیدن تصادفی مهره ها روی صفحه شطرنجه! به عبارت دیگه n مهره رو به صورت تصادفی در خانه های مختلف صفحه قرار می دیم و بررسی می کنیم که آیا شرط مساله رو برآورده می کنن یا نه؟ این روش بسیار سریع ما رو به جواب می رسونه. اما ایرادی که داره نمی شه مطمئن بود بشه به همه حالتهای چینش دست پیدا کرد. در صفحه 8 در 8 شطرنج این مساله 92 جواب مختلف داره. شما ممکنه روش تصادفی رو هزار بار به کار ببرید، اما نتونید همه 92 حالت ممکنه رو به دست بیارید. این روش زمانی مفیده که پیدا کردن یه جواب برای ما کافی باشه.
در این دسته روشها مهره ها رو یکی یکی و به صورت بازگشتی روی صفحه طوری می چینیم که مطمئن باشیم با مهره های قبلی تداخل نداره و شرط مساله برآورده می شه. معمولا از سطر اول صفحه شروع می کنیم به قرار دادن مهره ها. پر واضحه که هر سطر فقط می تونه یه مهره رو تو خودش جا بده. مهره سطر دوم رو طوری قرار می دیم که توسط مهره سطر اول تهدید نشه. برای این کار خانه های مختلفی از سطر رو می شه انتخاب کرد. برای نظم داشتن کارهامون فرض می کنیم همیشه انتخاب خانه ها از سمت چپ سطر شروع می شه. به عبارت دیگه با شروع از سمت چپ سطر اولین خانه ای که شرط رو برآورده کنه انتخاب می کنیم. به همین ترتیب سطرهای بعدی رو هم می چینیم. اگر به سطری رسیدیم که بر اساس چیدمان سطرهای قبلی هیچ خانه امنی برای مهره وجود نداشت ( یعنی همه خانه ها توسط مهره های قبلی تهدید می شدن ) یه مرحله به عقب بر می گردیم و مهره سطر قبل رو جابجا می کنیم. این کار هم با حرکت مهره به اولین خانه سمت چپ موقعیت فعلی که شرط رو برآورده کنه، انجام می شه. با ادامه دادن این روال و با جابجا کردن مهره ها به صورت منظم و بازگشتی تمامی حالتهای ممکنه به دست می یان.
برای پیاده سازی چنین الگوریتمی و تشخیص اینکه چه خانه هایی از سطر امن هستن روشهای مختلفی وجود داره. ساده ترینشون اینه که هر بار تمامی خانه هایی رو که امکان تهدید شدن از اونها وجود داره بررسی کنیم تا از قرار نداشتن مهره وزیر در اونها مطمئن باشیم. اما این روش اصلا کارا و بهینه نیست.
روش دیگه تعریف کردن صفحه شطرنج به صورت یه آرایه n در n هستش که خونه های امن و غیر امن با علامتگذاری مشخص می شن. هر بار که مهره ای رو صفحه قرار می گیره تمام خونه هایی که توسط این مهره تهدید می شن به صورت غیر امن علامتگذاری می شن. به این ترتیب می شه فهمید که هر خونه با توجه به چینش مهره های قبلی امن هست یا نه؟ اما این روش هم معایبی داره که باعث می شه به روش سوم رجوع کنیم. برای آشنایی با این معایب کافیه سعی کنید کد برنامه رو بنویسید!
در روش سوم که من ازش استفاده کردم، برای علامتگذاری خانه های امن و غیر امن از شیوه دیگه ای بهره می بریم. به این ترتیب که اقطار راست به چپ، چپ به راست و ستونها با شماره هایی مشخص می شن که کار علامتگذاری رو بسیار ساده می کنن. این روش بدون شک از کاراترین روشهای رسیدن به جواب مساله ماست. هم سرعت اجرای بالایی داره و هم حافظه مصرفی بسیار کم!
کدی که به زبان ++C درباره این مساله نوشته شده با استفاده از روش سوم تعداد جوابهای ممکن – و نه خود جوابها – برای مقادیر مختلف n رو مشخص می کنه. به عنوان مثال اگر n رو 8 وارد کنید خروجی برنامه 92 خواهد بود. توصیه می کنم برای nهای بزرگ برنامه رو امتحان نکنید! اگر n رو 16 وارد کنید بعد از گذشتن زمان زیادی عدد 14772512 روی صفحه نمایش چاپ می شه. یعنی در صفحه شطرنج 16 در 16 حدود ۱۵ میلیون حالت مختلف برای چیدمان صحیح وجود داره!!