داده ساختارها و مبانی الگوریتم ها
پیشگفتار مؤلف
در مورد خرید کتاب دادهساختارها و مبانی الگوریتمها، کتابهای زیادی بهزبان فارسی نوشته یا ترجمه شده است. اما اغلب این کتابها یا بیشتر به بیان مفاهیم دادهساختارها میپردازند یا تأکید خود را به طراحی الگوریتمها معطوف میکنند. یکی از هدفهای این کتاب، تلفیق این دو موضوع با هم در قالب یک کتاب پایه است. در این کتاب ضمن آنکه میخواهیم شما را با اکثر مطالب دادهساختارهای کامپیوتر، در سطح پایه و پیشرفته آشنا کنیم، در همهی مراحل نگاهی الگوریتمی به موضوعات مورد بحث داریم.
کار تهیهی محتوای این کتاب را از سال 1374 و با تهیهی جزوههایی از مطالبی که در آنزمان تدریس میکردم آغاز نمودم. این مطالب را به تدریج با تدریس درسهایی در دانشکدهی مهندسی کامپیوتر دانشگاه صنعتی شریف، چون «روشهای حل مسئله»، «ساختمان دادهها»، «ساختمان دادهها و الگوریتمها»، «طراحی و تحلیل الگوریتمها»، «مبانی علم کامپیوتر 1 و 2» تکمیل، و از آنها دو جزوهی درسی تهیه کردم.
حدود 10 سال پیش تصمیم گرفتم این جزوهها را که بیغلط هم نبودند، به دو کتاب تبدیل کنم، اما هرگز فکر نمیکردم که تهیهی اولین کتاب از این مجموعه بیش از 10 سال بهطول انجامد. طی دو سال اخیر ساعتهای بسیار زیادی بر روی این کتاب کار کردهام و بهمرور، این کتاب بهعنوان یک محصول مهم از زندگی علمیام درآمد و تکمیل آن بهصورت یک کتاب درسی کامل و منسجم، شامل تمرینها و پروژههای مناسب یکی از هدفهایم شد.
در تهیهی مطالب این کتاب از بخشهایی از کتابهای ]11[،]2[،]13[،]3[ و ]4[ (و ویرایش سال 2001 آن ]5[ که به کتاب CLRS مشهور است) و چند کتاب دیگر مانند ]1[،]9[،]12[ و ]14[ که بهترتیب زمانی از سیسال پیش، بهعنوان مراجع درسهای خود بهکار بردهام استفاده کردهام. در این میان، از کتاب CLRS بیشتر استفاده شده است. مثلاً بخشهایی از فصل سوم (روشهای تحلیل الگوریتمها)، فصل پنجم (درهمسازی)، فصل ششم(مرتبسازی و مرتبهی آماری) و بخشهایی از فصل هفتم (داده ساختارهای پیشرفته) برگرفته از مطالب این کتاب است.
نقش المپیاد کامپیوتر در تکمیل محتوای این کتاب انکارناپذیر است. 18 سال خدمت در المپیاد کامیپوتر ایران و سروکار داشتن با دانشآموزان و دانشجویان خوشفکر و تیزهوشی که درگیر این المپیاد بودند، به من نکات بسیاری آموخته است. برخی از ایدههای نو در این کتاب و تعدادی از تمرینها (اکثر تمرینهای فصل 2) و پروژهها، حاصل این تعامل است. مثلاً، بخشهایی از فصل 2، مبتنی بر کتاب ]18[ است.
در این کتاب، برخی از تمرینها که مشکلترند با علامت ستاره(*) و آنهایی که بسیار مشکل هستند با علامت دوستاره (**) مشخص شدهاند.
من سالهاست که این کتاب را تقریباً بهطور کامل، در درسی بههمیننام تدریس میکنم. این اولین درسی است که دانشجویان رشته ی مهندسی کامپیوتر، پس از گذراندن دروس «مبانی کامپیوتر» و «ساختمانهای گسسته» میگیرند و بهطور جدی با این مفاهیم آشنا میشوند. این کتاب برای همهی دانشجویان رشتههای مهندسی و علوم کامپیوتر و همچنین، دانشآموزانی که خود را برای ورود به دورههای المپیاد کامپیوتر آماده میکنند، مناسب خواهد بود.
بهزودی اسلایدهایی را که برای آن تهیه کردهام در وبگاهی که بهمنظور پشتیبانی از کتاب توسط انتشارات فاطمی طراحی و راهاندازی خواهد شد در اختیار علاقهمندان قرار خواهم داد. از خوانندگان محترم تقاضا میکنم اشکالهای احتمالی کتاب را از طریق همین وبگاه با من در میان بگذارند.
سپاسگزاری
در تهیهی اولین نسخهی جزوهی درسیام افراد بسیاری کمک کردند. برخی از آنان هماکنون مدارج عالی را بهاتمام رسانده و استاد دانشگاه یا پژهشگر برجستهای هستند و برای من افتخاری است که زمانی استاد آنها بودهام. این افراد، بهترتیب حروف الفبا عبارتاند از: مسعود اسدپور، سیدعلی اکرمیفر، اختای ایلغمی، جلال بنایی بروجنی، روزبه پورنادر، طلا تفضلی، آرش رجاییان، آرش رستگار، حبیب رستمی، ساسان دشتینژاد، آزاده شاکری، افسانه فضلی، هشام فیلی، حجت قادری، محمدرضا قهرمانی، مسلم کاظمی، شهاب کمالی، سولماز کلاهی، ناصر عزتی، علیرضا ملکزاده، محمد مهدیان، مهران مهر، محمودرضا صانعیپور، محمدرضا صلواتیپور، ابوالفضل هادی اسفنگره، شیوا نجاتی و احسان نوربخش.
برخی دیگر نقش بیشتری داشتند: وهاب میررکنی، در رسم اولیهی تعدادی از شکلها و تهیهی مطالب اولیهی بخش 3-6؛ و سارا احمدیان، نیما پوردامغانی و هدا اکبری هم در تهیه و ترجمهی برخی از تمرینها و بخشهایی از کتاب مرا یاری دادند.
پروژههای فصلها منتخبی از تمرینهای برنامهنویسی است که در زمان تدریس این درسها به دانشجویان واگذار کردهام؛ کیان میرجلالی در زمانی که دستیار درس من بود تعدادی از آنها را تهیه کرد.
آتنا احمدی نیز در برگردان خودکار واژهنامههای پیوست کتاب مرا یاری داد.
این کتاب بیش از 7 بار ویرایش شد تا بهشکل نهایی درآمد. محمد امینصادقی، ویراستار علمی کتاب، درستی الگوریتمها و رویهها را بررسی کرد و پیشنهادهای سودمندی داد. پیش از آن نیز، وحید لیاقت و مرجان قزوینینژاد فصلهایی از کتاب را بازخوانی کرده بودند.
آقای فرید مصلحی، مدیرفنی تولید انتشارات فاطمی، نسخههای نهایی کتاب را چند بار بازبینی کرد و با تیزبینی خود نکتههای مفید زیادی را متذکر شد. شکل نهایی کتاب مدیون دقت ایشان است.
از همهی این عزیزان صمیمانه متشکرم.
کل این کتاب را خود تایپ و تماماً با استفاده از نرمافزار فارسی تک حروفچینی کردهام، که کاری سنگین و همراه با صرف وقت زیاد بود. در این رابطه، بهداد اسفهبد در حل برخی مشکلات مرا یاری کرد. نرمافزار فارسی تک زیر نظر این جانب و به وسیلهی گروه پروژهی فارسی تک تهیه شد و از سال 1375 بهصورت رایگان در اختیار عموم قرار گفته است. از اعضای این گروه نیز تشکر مینمایم.
شکلها را با نرمافزار xfig در محیط cygwin خود رسم کردهام. در انتها، آقای مصطفی نوریبایگی رنگهای شکلها را متناسب با نظر ناشر اصلاح کرد.
بخشی از وقت خود را در زمانی که پژوهشگر مقیم در پژوهشکدهی علوم کامپیوتر پژوهشگاه دانشهای بنیادی بودم و با کسب اجازه، صرف اتمام این کتاب کردم. از این پژوهشکده هم تشکر میکنم.
در انتها، از همسر مهربان و دختران عزیزم که با بردباری خود مرا در تهیهی این کتاب حمایت کردند سپاسگزاری میکنم.
این کتاب با نگاهی الگوریتمی مطالب مربوط به داده ساختاری کامپیوتری را، هم در سطح پایه و هم پیشرفته، ارائه میکند.<img data-cke-saved-src="" src=""http://www.irysc.com/images/uploads/Image/books/Dade-sakhtar-fatemi.jpg"" border=""0"" alt=""داده" ساختارها="" و="" مبانی="" الگوریتم="" ها="" -="" انتشارات="" فاطمی"=""> از این رو، از همان ابتدا به مبانی طراحی الگوریتم ها میپردازد و ترکیب مناسبی از داده ساختارها و الگوریتمها ارایه میکند. این کتاب که بخشی از آن، سال ها به عنوان جزوۀ درسی در دانشگاه صنعتی شریف تدریس شده است، میتواند به عنوان کتاب اصلی در اولین درسی که دانشجویان رشته های مهندسی و علوم کامپیوتر در این زمینه میگیرند، و در برنامه مصوب به نام ساختمان داده و الگوریتمها یا ساختمان داده ها آمده است، استفاده شود. این کتاب حاوی 128 شبه کد، 165 شکل، بیش از 330 تمرین و 15 پروژه برنامه نویسی است و حاصل سال ها تجربه تدریس مؤلف است. استفاده از این کتاب علاوه بر دانشجویان، برای دانش آموزانی که خود را برای ورود به دوره های المپیاد کامپیوتر آماده میکنند مفید خواهد بود.
دربارۀ مؤلف
دکتر محمد قدسی در سال 1331 در شهر ملایر متولد شد. دیپلم خود را از دبیرستان علوی در تهران گرفت و لیسانس خود را در سال 1354 در رشتۀ مهندسی برق از دانشگاه صنعتی شریف اخذ نمود. سپس برای ادامۀ تحصیل به دانشگاه کالیفرنیا، برکلی در آمریکا رفت و در سال 1356 فوق لیسانس خود را در رشتۀ مهندسی برق و علم کامپیوتر گرفت. در همان سال به ایران بازگشت و عضو هیأت علمی دانشگاه صنعتی شریف و مربی دانشکدۀ ریاضی و علوم کامپیوتر آن دانشگاه شد. در سال 1363 جهت ادامۀ تحصیل مجدداً به آمریکا رفت و در سال 1368 دکترای خود را در علم کامپیوتر از دانشگاه ایالتی پنسیلوانیا گرفت. از آن سال تاکنون عضو هیأت علمی دانشکدۀ مهندسی کامپیوتر دانشگاه صنعتی شریف است و از سال 1384، استاد تمام این رشته است. علاوه بر سمتهای علمی و اجرایی فراوان، او از سال 1371 رئیس کمیتۀ ملی المپیاد کامپیوتر در کشور است، و از سال 1378 مسابقۀ برنامهنویسی دانشجویی ایسیام را در ایران آغاز کرد و سرپرست مسابقۀ منطقهای ایسیام در تهران است.
انتشارات فاطمی
داده ساختارها و مبانی الگوریتم ها
ویژگی ها | |
---|---|
تعداد صفحه: | 507 |
ناشر: | فاطمی |
نوع جلد: | شومیز |
نویسنده: | محمد قدسی |
برند | فاطمی |