Facebook Pixel
Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Algorithms

Algorithms

توسط Panos Louridas 2020 312 صفحات
4.04
100+ امتیازها
گوش دادن
Listen to Summary

نکات کلیدی

1. الگوریتم‌ها: معماران نادیدنی دنیای دیجیتال ما

بدون الگوریتم‌ها، کامپیوترها بی‌فایده خواهند بود و هیچ‌یک از فناوری‌های مدرن وجود نخواهد داشت.

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

  • الگوریتم‌ها ابزارهای شناختی هستند، مانند اعداد و حساب، که توانایی ما را برای درک و تعامل با جهان افزایش می‌دهند.
  • واژه "الگوریتم" از نام محمد بن موسی الخوارزمی (حدود 780–حدود 850) یک دانشمند ایرانی که در زمینه ریاضیات، نجوم و جغرافیا کار کرده است، گرفته شده است.

فراتر از کامپیوترها. الگوریتم‌ها مدت‌ها قبل از ظهور کامپیوترها وجود داشتند و به طور ذاتی به آن‌ها وابسته نیستند. آن‌ها تنها مجموعه‌ای از دستورالعمل‌های به‌خوبی تعریف‌شده برای حل یک مشکل هستند که می‌توانند توسط انسان‌ها یا ماشین‌ها اجرا شوند.

  • الگوریتم اقلیدس برای یافتن بزرگ‌ترین مقسوم‌علیه مشترک (GCD) نمونه‌ای از الگوریتمی است که قرن‌ها قبل از کامپیوترها وجود داشته است.
  • فرآیند تقسیم طولانی نیز یک الگوریتم است که ما در مدرسه یاد می‌گیریم.

تفکر الگوریتمی. درک الگوریتم‌ها یک روش جدید از استدلال را پرورش می‌دهد که بر حل مشکلات عملی و کارآمد تمرکز دارد. این "تفکر الگوریتمی" یک ابزار ذهنی ارزشمند است، حتی برای کسانی که برنامه‌نویسان حرفه‌ای نیستند.

  • تفکر الگوریتمی شامل تجزیه مشکلات پیچیده به مراحل کوچک و قابل مدیریت است.
  • این روش بر اهمیت طراحی فرآیندهایی که هم عملی و هم کارآمد هستند، تأکید می‌کند.

2. گراف‌ها: مدل‌سازی روابط و حل مشکلات پیچیده

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

گراف‌ها به عنوان مدل‌ها. گراف‌ها ساختارهای ریاضی هستند که از گره‌ها (راس‌ها) و لبه‌ها (پیوندها) تشکیل شده‌اند که آن‌ها را به هم متصل می‌کنند. آن‌ها راهی قدرتمند برای مدل‌سازی روابط بین اشیاء و حل طیف وسیعی از مشکلات فراهم می‌کنند.

  • شبکه‌های اجتماعی، شبکه‌های جاده‌ای و وب جهانی همه می‌توانند به عنوان گراف‌ها نمایان شوند.
  • مسئله پل کونیگسبرگ که توسط اویلر حل شد، به عنوان پایه‌گذار نظریه گراف شناخته می‌شود.

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

  • توالی‌یابی DNA: یافتن ترکیب یک قطعه DNA ناشناخته.
  • زمان‌بندی مسابقات: زمان‌بندی مسابقات به گونه‌ای که هر شرکت‌کننده تنها یک مسابقه در روز انجام دهد.
  • یافتن کوتاه‌ترین مسیر: تعیین کارآمدترین مسیر بین دو نقطه روی نقشه.

الگوریتم‌ها بر روی گراف‌ها. بسیاری از الگوریتم‌ها برای حل مشکلات مرتبط با گراف‌ها طراحی شده‌اند، مانند یافتن کوتاه‌ترین مسیر، شناسایی جوامع و زمان‌بندی وظایف.

  • الگوریتم دیکسترا کوتاه‌ترین مسیر بین دو گره در یک گراف را پیدا می‌کند.
  • الگوریتم هیرهلزر مدارهای اویلری را در گراف‌ها پیدا می‌کند.

3. جستجو: یافتن سوزن‌ها در کاه‌های همیشه در حال رشد

یک الگوریتم جستجوی خوب می‌تواند به بهبود چشمگیری در سرعت منجر شود.

همه‌جا بودن جستجو. جستجو یک عملیات بنیادی در علوم کامپیوتر است که در تقریباً هر برنامه‌ای برای پیدا کردن اقلام خاص در یک مجموعه داده استفاده می‌شود. الگوریتم‌های جستجوی کارآمد برای عملکرد بسیار حیاتی هستند، به‌ویژه با توجه به افزایش حجم داده‌ها.

  • جستجو در پایگاه‌های داده، موتورهای جستجوی وب و حتی برنامه‌های ساده‌ای مانند ویرایشگرهای متن استفاده می‌شود.
  • کارایی یک الگوریتم جستجو می‌تواند تأثیر قابل توجهی بر عملکرد کلی یک برنامه داشته باشد.

انواع الگوریتم‌های جستجو. الگوریتم‌های جستجوی مختلفی برای انواع مختلف داده‌ها و نیازهای جستجو مناسب هستند.

  • جستجوی خطی: بررسی هر مورد در یک لیست به ترتیب تا زمانی که مورد هدف پیدا شود.
  • جستجوی خودسازمان‌دهنده: بازآرایی لیست در حین جستجوها که محبوبیت اقلام جستجو شده را منعکس می‌کند.
  • جستجوی دودویی: جستجوی کارآمد داده‌های مرتب شده با تقسیم مکرر بازه جستجو به دو نیمه.

کارایی جستجوی دودویی. جستجوی دودویی بسیار کارآمد است و پیچیدگی زمانی O(log n) دارد. این بدان معناست که تعداد مراحل لازم برای یافتن یک مورد به‌طور لگاریتمی با اندازه مجموعه داده افزایش می‌یابد.

  • برای جستجو در میان یک میلیون مورد، بیش از 20 بار آزمایش نیاز نخواهد بود.
  • با صد بار آزمایش می‌توانیم هر موردی را در میان جستجو کنیم و پیدا کنیم، که این بیشتر از یک نونیل است.

4. مرتب‌سازی: نظم دادن به هرج و مرج برای کارایی و بینش

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

اهمیت مرتب‌سازی. مرتب‌سازی یک عملیات بنیادی در علوم کامپیوتر است که برای ترتیب دادن داده‌ها به یک ترتیب خاص برای بازیابی و تحلیل کارآمد استفاده می‌شود. این یک کار همه‌جا حاضر است، از سازماندهی فایل‌ها در یک کامپیوتر تا رتبه‌بندی نتایج جستجو.

  • الگوریتم‌های مرتب‌سازی در پایگاه‌های داده، سیستم‌های عامل و برنامه‌های مختلف استفاده می‌شوند.
  • کارایی یک الگوریتم مرتب‌سازی می‌تواند تأثیر قابل توجهی بر عملکرد یک برنامه داشته باشد.

انواع الگوریتم‌های مرتب‌سازی. الگوریتم‌های مرتب‌سازی مختلفی وجود دارد که هر یک دارای نقاط قوت و ضعف خاص خود هستند.

  • مرتب‌سازی انتخابی: به‌طور مکرر حداقل عنصر را پیدا کرده و آن را در موقعیت صحیح خود قرار می‌دهد.
  • مرتب‌سازی درج: هر عنصر را در موقعیت صحیح خود در بخشی که قبلاً مرتب شده است، وارد می‌کند.
  • مرتب‌سازی رادیکس: مرتب‌سازی اقلام با پردازش ارقام یا کاراکترهای فردی، بدون مقایسه مستقیم.
  • مرتب‌سازی سریع: یک الگوریتم تقسیم و غلبه که داده‌ها را در اطراف یک عنصر محوری تقسیم می‌کند.
  • مرتب‌سازی ادغامی: یک الگوریتم تقسیم و غلبه که به‌طور مکرر زیرلیست‌های مرتب شده را ادغام می‌کند.

انتخاب الگوریتم. انتخاب الگوریتم مرتب‌سازی به ویژگی‌های خاص داده و الزامات عملکرد برنامه بستگی دارد.

  • مرتب‌سازی سریع به‌طور کلی سریع‌ترین الگوریتم مرتب‌سازی در عمل است، اما عملکرد آن می‌تواند بسته به انتخاب محور متفاوت باشد.
  • مرتب‌سازی ادغامی دارای پیچیدگی زمانی O(n log n) تضمین شده است و برای پردازش موازی مناسب است.
  • مرتب‌سازی رادیکس می‌تواند برای مرتب‌سازی داده‌ها با دامنه محدود از مقادیر بسیار کارآمد باشد.

5. پیج‌رنک: تعیین اهمیت در دنیای پیوندی

هر چه تعداد پیوندهایی که یک صفحه وب به دست می‌آورد بیشتر باشد، نویسندگان بیشتری آن را به اندازه کافی مهم می‌دانند که از صفحه خود به آن پیوند دهند و بنابراین اهمیت آن به‌طور کلی بیشتر می‌شود.

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

  • پیج‌رنک بر اساس این ایده است که یک صفحه وب مهم است اگر صفحات وب مهم دیگری به آن پیوند دهند.
  • این الگوریتم هم تعداد و هم کیفیت پیوندهای برگشتی به یک صفحه را در نظر می‌گیرد.

مدل کاربر تصادفی. پیج‌رنک را می‌توان از طریق استعاره یک کاربر تصادفی که بر روی پیوندها کلیک می‌کند تا در وب حرکت کند، درک کرد. پیج‌رنک یک صفحه احتمال بازدید کاربر تصادفی از آن صفحه است.

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

فرمول‌بندی ریاضی. پیج‌رنک می‌تواند به‌طور ریاضی با استفاده از جبر خطی بیان شود. پیج‌رنک‌های تمام صفحات وب می‌توانند به‌عنوان یک بردار نمایان شوند و الگوریتم شامل ضرب مکرر این بردار با یک ماتریس نمایانگر ساختار پیوندهای وب است.

  • روش قدرت برای محاسبه بردار پیج‌رنک استفاده می‌شود.
  • ماتریس گوگل نسخه‌ای اصلاح‌شده از ماتریس پیوند است که اطمینان می‌دهد الگوریتم به یک راه‌حل پایدار همگرا می‌شود.

6. یادگیری عمیق: تقلید از مغز برای سیستم‌های هوشمند

هدف این است که برخی رفتارهای مفید را نشان دهیم که معمولاً با هوش مرتبط می‌دانیم.

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

  • نورون‌های مصنوعی بلوک‌های سازنده اصلی شبکه‌های عصبی هستند.
  • شبکه‌های عصبی از لایه‌های متصل به هم از نورون‌ها تشکیل شده‌اند.

فرآیند یادگیری. شبکه‌های عصبی با تنظیم وزن‌ها و تعصبات اتصالات خود یاد می‌گیرند. این فرآیند آموزش نامیده می‌شود و شامل تغذیه شبکه با مقدار زیادی داده و استفاده از الگوریتمی به نام پس‌انتشار برای کاهش تفاوت بین خروجی شبکه و خروجی مورد نظر است.

  • یادگیری تحت نظارت: الگوریتم با هر دو ورودی و خروجی مورد نظر ارائه می‌شود.
  • پس‌انتشار: الگوریتمی برای آموزش شبکه‌های عصبی.

معماری‌های عمیق. شبکه‌های یادگیری عمیق دارای لایه‌های زیادی هستند که به آن‌ها اجازه می‌دهد تا نمایش‌های سلسله‌مراتبی از داده‌ها را یاد بگیرند. این به آن‌ها امکان استخراج ویژگی‌ها و الگوهای پیچیده‌ای را می‌دهد که شناسایی آن‌ها با تکنیک‌های سنتی یادگیری ماشین دشوار است.

  • لایه اول یک شبکه چندلایه ممکن است یاد بگیرد که الگوهای محلی کوچکی مانند لبه‌ها در تصویر را شناسایی کند.
  • لایه دوم ممکن است یاد بگیرد که الگوهایی را شناسایی کند که از الگوهای شناسایی‌شده توسط لایه اول ساخته شده‌اند، مانند چشم‌ها، بینی‌ها و گوش‌ها.

7. محدودیت‌های محاسبات: درک آنچه الگوریتم‌ها نمی‌توانند انجام دهند

محدودیت‌های محاسباتی ما توسط ماشین‌های تورینگ تعیین می‌شود. هر چیزی که یک کامپیوتر می‌تواند انجام دهد، ما واقعاً می‌توانیم با قلم و کاغذ انجام دهیم... هر چیزی که شما در هر دستگاه دیجیتال مشاهده می‌کنید، یک سری از چنین دستکاری‌های نمادین ابتدایی است.

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

  • نظریه چرچ-تورینگ بیان می‌کند که هر الگوریتمی که می‌تواند توسط یک کامپیوتر محاسبه شود، می‌تواند همچنین توسط یک ماشین تورینگ محاسبه شود.
  • کامپیوترهای کوانتومی، در حالی که مزایای سرعت بالقوه‌ای را ارائه می‌دهند، نمی‌توانند مشکلاتی را که به‌طور بنیادی غیرقابل حل هستند، حل کنند.

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

  • مراحل به قدری ابتدایی هستند که سر ماشین تورینگ برای انجام عملیات باید به‌طور مکرر حرکت کند.
  • شما به هیچ مدرک پیشرفته‌ای برای انجام مراحل یک ماشین تورینگ نیاز ندارید؛ تنها کافی است که یک جدول را جستجو کنید، بر روی نوار حرکت کنید، یک نماد را در هر بار بخوانید و بنویسید و وضعیت خود را پیگیری کنید.

خلاقیت و الگوریتم‌ها. با وجود محدودیت‌های محاسباتی، خلاقیت انسانی همچنان به توسعه الگوریتم‌های جدید و نوآورانه ادامه می‌دهد. توانایی مدل‌سازی مؤثر مشکلات و طراحی الگوریتم‌های کارآمد همچنان یک حوزه کلیدی در علوم کامپیوتر است.

  • موفقیت یک الگوریتم تنها به زیبایی و کارایی آن بستگی ندارد.
  • همچنین به نقشه‌برداری الگوریتم به یک مشکل مربوط می‌شود.

آخرین به‌روزرسانی::

نقد و بررسی

4.04 از 5
میانگین از 100+ امتیازات از Goodreads و Amazon.

کتاب الگوریتم‌ها نوشته‌ی پانوس لوریاداس با استقبال عمومی مثبت مواجه شده و میانگین امتیاز آن ۴.۰۴ از ۵ است. خوانندگان از مرور جامع و مثال‌های واقعی آن قدردانی می‌کنند که آن را برای افرادی که به این موضوع تازه وارد هستند، قابل دسترس می‌سازد. این کتاب به خاطر توضیحات روشن و سبک نوشتار جذابش مورد تحسین قرار گرفته است. برخی از خوانندگان فصل‌های پایانی را چالش‌برانگیزتر یافتند و عده‌ای دیگر خواستار جزئیات ریاضی بیشتری بودند. به‌طور کلی، این کتاب به‌عنوان یک مقدمه‌ی عالی بر الگوریتم‌ها توصیه می‌شود، به‌ویژه برای کسانی که پیش‌زمینه‌ای از این حوزه دارند.

درباره نویسنده

پانوس لوریادس، استاد یار در گروه علوم مدیریت و فناوری دانشگاه اقتصاد و تجارت آتن است. او کتاب «الگوریتم‌های دنیای واقعی: راهنمایی برای مبتدیان» را که توسط انتشارات MIT منتشر شده، تألیف کرده است. لوریادس در نظریه الگوریتم و کاربردهای عملی آن تخصص دارد. کار او بر روی قابل فهم کردن مفاهیم پیچیده الگوریتمی برای مخاطبان گسترده‌تر متمرکز است و تلاش می‌کند تا فاصله بین علوم کامپیوتر نظری و حل مسائل واقعی را پر کند. از طریق تدریس و نوشتن، لوریادس به دنبال روشن کردن مفهوم الگوریتم‌ها و نشان دادن ارتباط آن‌ها در زمینه‌های مختلف فراتر از علوم کامپیوتر است.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Home
Library
Get App
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Get personalized suggestions
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Apr 26,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Appearance
Loading...
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →