پرش به محتوای اصلی

مصورسازی الگوریتم رایگان

مرتب‌سازی، یافتن مسیر و الگوریتم‌های کلاسیک را زنده ببینید — Bubble/Quick/Merge Sort، Dijkstra/A*/BFS روی شبکه هزارتوی تعاملی، به‌علاوه جستجوی دودویی، غربال، N-Queens و Game of Life. انیمیشن گام‌به‌گام، شبه‌کد همگام، معیارهای زنده و حالت مسابقه کنار‌به‌کنار. سازگار با موبایل و ۱۰۰٪ در مرورگر شما.

کاملاً در مرورگر شما اجرا می‌شود — هیچ داده‌ای از دستگاه شما خارج نمی‌شود.

نحوه کار

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

  1. 1
    یک الگوریتم و یک مجموعه داده انتخاب کنید
    از میان مرتب‌سازی حبابی، انتخابی، درجی، ادغامی، سریع، هیپ، شل، کاکتیل، شمارشی، و رادیکس انتخاب کنید (به‌علاوه بوگوسورت، برای سرگرمی). یک آرایه تصادفی، تقریباً-مرتب، معکوس، یا کمی-منحصربه‌فرد تولید کنید، یا اعداد جداشده-با-کامای خودتان را تایپ کنید.
  2. 2
    تماشا کنید اجرا می‌شود — و همراه بخوانید
    میله‌ها بر اساس آنچه اتفاق می‌افتد رنگ‌بندی می‌شوند (مقایسه، جابه‌جایی، پیوت، مرتب‌شده). پنل شبه‌کد دقیقاً خط در‌حال-اجرا را برجسته می‌کند، و شمارنده‌های زنده مقایسه‌ها، جابه‌جایی‌ها، نوشته‌ها، و دسترسی‌های آرایه را در زمان واقعی ردیابی می‌کنند.
  3. 3
    زمان را کنترل کنید
    سرعت را تنظیم کنید، خط زمان را بلغزانید، یا یک عملیات تک را جلو و عقب گام بردارید تا دقیقاً بیاموزید الگوریتم چگونه تصمیمات خود را می‌گیرد. گام-به-عقب دقیق است چون هر گام یک عکس فوری ذخیره‌شده است، نه یک اجرای-مجدد.
  4. 4
    آن‌ها را سر-به-سر مسابقه دهید
    حالت مسابقه دو یا چند الگوریتم را روی همان ورودی هم‌زمان، پهلو-به-پهلو، با یک جدول معیار اجرا می‌کند پس می‌توانید ببینید، مثلاً، چرا quicksort از bubble sort پیشی می‌گیرد.

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

راهنما

مثال عملی

زبانه‌ی «Sorting» را باز کنید. در «عددها یا کلمه‌های دلخواه» عبارت 5, 3, 8, 1 را بنویسید و «اعمال» را بزنید. «اندازه: 4» ظاهر می‌شود و چهار میله‌ی دارای برچسب جای 40 میله‌ی تصادفی را می‌گیرند. «مرتب‌سازی حبابی» انتخاب شده و «جدول زمانی» 1/14 را نشان می‌دهد. «پخش» را بزنید. وقتی اجرا تمام می‌شود، جدول زمانی 14/14 را نشان می‌دهد، میله‌ها 1، 3، 5، 8 را با رنگ «مرتب‌شده» نشان می‌دهند و شمارنده‌ها مقایسه‌ها 6، جابه‌جایی‌ها 4، نوشتن‌ها 8 و دسترسی‌ها 12 را نشان می‌دهند. حالا با همان داده روی «مرتب‌سازی انتخابی» بزنید. 18 گام طول می‌کشد، با مقایسه‌ی 6 اما فقط جابه‌جایی 2، چون مرتب‌سازی انتخابی در هر دور حداکثر یک بار جابه‌جا می‌کند. banana, apple, cherry را بنویسید و «اعمال» را بزنید تا به‌جای عدد، کلمه‌ها مرتب شوند. «اشتراک‌گذاری این اجرا» پیوندی کپی می‌کند که همین الگوریتم، همین داده و گامی را که در آن هستید دوباره باز می‌کند. «ذخیره تصویر (PNG)» فریم فعلی را ذخیره می‌کند، مثلاً با نام bubble-sort-step-14.png.

کدام تنظیمات را استفاده کنید و محدودیت‌ها

  • یک الگوریتم و سپس یک شکل شروع انتخاب کنید. زبانه‌ی Sorting شامل Bubble Sort، Selection Sort، Insertion Sort، Merge Sort، Quicksort، Heapsort، Shell Sort، Cocktail Shaker، Counting Sort و Radix Sort (LSD) است. «افزودن Bogosort (برای تفریح)» یازدهمی را اضافه می‌کند. دکمه‌های شکل «تصادفی»، «تقریباً مرتب‌شده»، «معکوس‌شده» و «تعداد کمی منحصربه‌فرد» هستند. لغزنده‌ی «اندازه» از 2 تا 120 می‌رود و در رایانه از 40 و در تلفن از 15 شروع می‌شود، و «بُر زدن» داده‌ی تازه می‌سازد. با عوض کردن الگوریتم، همان داده می‌ماند، پس می‌توانید اجراها را منصفانه مقایسه کنید.
  • کنترل‌های پخش را یاد بگیرید. از «پخش»/«مکث»، «گام عقب»، «گام جلو» و «شروع دوباره» استفاده کنید، یا «جدول زمانی» را به هر گام بکشید. «سرعت» بر حسب گام در ثانیه است، از 1 تا 240، و در رایانه از 30 و در تلفن از 20 شروع می‌شود. چون کل اجرا از قبل محاسبه می‌شود، رفتن به عقب دقیق است. میان‌برها: Space، پیکان‌های چپ و راست، R، و [ و ] برای سرعت؛ وقتی فوکوس روی دکمه، لغزنده یا کادر متن است نادیده گرفته می‌شوند. نخستین اجرا یک بار خودکار شروع می‌شود و با عوض کردن زبانه پخش متوقف می‌شود.
  • عددها یا کلمه‌های خودتان را بنویسید. «عددها یا کلمه‌های دلخواه» دست‌کم دو مورد لازم دارد که با ویرگول یا فاصله جدا شده باشند. عددها به عدد صحیح گرد می‌شوند. اگر هر مورد عدد نباشد، همه‌ی موارد کلمه فرض می‌شوند و به ترتیب الفبایی مرتب می‌شوند. فقط 120 مورد اول استفاده می‌شود و وقتی تعداد 30 یا کمتر است برچسب‌ها روی میله‌ها دیده می‌شوند. Counting Sort برای هر مقدار بین کوچک‌ترین و بزرگ‌ترین یک جا می‌سازد، پس فهرستی مثل 1, 50000000 از آن 50 میلیون جا می‌خواهد. برای آن الگوریتم عددها را در بازه‌ی کوچک نگه دارید.
  • علاوه بر انیمیشن، شمارنده‌ها را هم بخوانید. پنل مقایسه‌ها، جابه‌جایی‌ها، نوشتن‌ها، دسترسی‌ها، گام و زمان محاسبه را نشان می‌دهد که تا گامی که در آن هستید شمرده شده‌اند. Counting Sort و Radix Sort مقایسه انجام نمی‌دهند، پس آن کادر برایشان پنهان است. «زمان محاسبه» مدتی است که این مرورگر برای به‌دست آوردن گام‌ها صرف کرده، نه آزمون سرعت الگوریتم. «اندازه‌گیری رشد» زیر «رشد کار با افزایش اندازه» همه‌ی الگوریتم‌های مرتب‌سازی به‌جز Bogosort را روی آرایه‌های تصادفی با 10، 25، 50، 100، 250 و 500 عنصر اجرا می‌کند، و «دانلود نتیجه‌ها به‌صورت CSV» فایل sorting-growth.csv را ذخیره می‌کند.
  • الگوریتم‌ها را مسابقه دهید و یافته‌هایتان را به اشتراک بگذارید. «حالت مسابقه» به شما اجازه می‌دهد 2 تا 4 الگوریتم را روی همان داده و با همان نرخ گام اجرا کنید. آنکه کمترین مجموع گام را دارد اول تمام می‌کند و نشان جام می‌گیرد، و «بازگشت به نمای تنها» شما را برمی‌گرداند. گام‌ها ثانیه نیستند، پس این نشان می‌دهد هر روش چقدر کار انجام می‌دهد، نه این‌که روی رایانه‌ی شما چقدر سریع اجرا می‌شود. Bogosort را نمی‌شود مسابقه داد. بیرون از حالت مسابقه، «اشتراک‌گذاری این اجرا» پیوندی کپی می‌کند که در همان گام و در حالت مکث باز می‌شود.
  • برای یافتن مسیر و الگوریتم‌های کلاسیک زبانه را عوض کنید. «یافتن مسیر» شامل Breadth-First Search، Dijkstra، A* Search، Greedy Best-First، Bidirectional BFS و Depth-First Search روی شبکه‌ای با 16 ردیف و 30 ستون است، یا 18 در 13 روی تلفن. برای کشیدن دیوار بکشید و شروع سبز یا هدف قرمز را بکشید. در حالت «وزن‌ها» هر خانه هزینه‌ی 5 دارد؛ فقط Dijkstra و A* از وزن‌ها استفاده می‌کنند. «کلاسیک» شامل Binary Search، Linear Search، Sieve of Eratosthenes (n از 20 تا 120)، N-Queens (N از 4 تا 10)، Game of Life و Fisher–Yates Shuffle (اندازه‌ی 8 تا 60) است.

مشکلات رایج و راه حل آن‌ها

پیام «دست‌کم دو عدد یا کلمه وارد کنید و با ویرگول جدا کنید.» را می‌بینید.
کادر دلخواه کمتر از دو مورد پیدا کرده است. یک عدد تنها، کادر خالی، یا فقط ویرگول و فاصله همگی این پیام را ایجاد می‌کنند و دور کادر قرمز می‌شود. مورد دوم را اضافه کنید و «اعمال» یا Enter را بزنید. فاصله هم جداکننده است، هرچند پیام از ویرگول نام می‌برد. متنی مثل 5 3 x خطا نیست: به‌عنوان سه کلمه خوانده می‌شود.
پیام «Bogosort زمان فاکتوریلی دارد، بنابراین به 7 عنصر محدود شده است — هر اندازه بزرگ‌تر عملاً تا ابد اجرا می‌شود.» را می‌بینید.
شما Bogosort را با «افزودن Bogosort (برای تفریح)» اضافه و انتخاب کرده‌اید. این الگوریتم تا وقتی فهرست اتفاقی مرتب شود به‌طور تصادفی بُر می‌زند، پس لغزنده‌ی «اندازه» در 7 می‌ایستد، اگر داده بزرگ‌تر بود به 7 کاهش می‌یابد، و فهرست دلخواه به 7 مورد اول بریده می‌شود. الگوریتم دیگری انتخاب کنید تا به اندازه‌های تا 120 برگردید.
پیام «بدون مسیر — هدف دیوارشده است.» را می‌بینید.
این پیام در زبانه‌ی «یافتن مسیر» وقتی ظاهر می‌شود که اجرا بدون رسیدن به هدف تمام شود، چون دیوارها آن یا شروع را محاصره کرده‌اند. «دیوار تصادفی» ممکن است اتفاقی چنین کند. هدف یا شروع را به خانه‌ای باز بکشید، یا «پاک‌سازی دیوار» را بزنید که وزن‌ها را هم پاک می‌کند. «پاک‌سازی مسیر» فقط اجرا را به گام اول برمی‌گرداند و دیوارهای شما را نگه می‌دارد.
دکمه‌ی «اشتراک‌گذاری این اجرا» به «کپی ناموفق» تغییر می‌کند.
مرورگر کلیپ‌بورد را مسدود کرده است، که ممکن است در یک قاب جاسازی‌شده یا بدون مجوز رخ دهد. پیوند معمولاً در نوار نشانی هم گذاشته می‌شود، پس می‌توانید آن‌جا کپی کنید. پیوند فقط زبانه‌ی Sorting را پوشش می‌دهد و الگوریتم، حداکثر 120 مورد و شماره‌ی گام را در خود دارد. اجراهای «یافتن مسیر» و «کلاسیک» را نمی‌شود این‌گونه به اشتراک گذاشت.
انیمیشن شروع نمی‌شود یا خودش متوقف می‌شود.
نخستین اجرا فقط یک بار خودکار شروع می‌شود، و اگر دستگاه شما حرکت کمتر بخواهد اصلاً شروع نمی‌شود، پس «پخش» را بزنید. وقتی زبانه پنهان باشد هم پخش متوقف می‌شود و در آخرین گام می‌ایستد؛ زدن «پخش» در آن‌جا از گام اول دوباره شروع می‌کند. وقتی فوکوس روی دکمه، لغزنده یا کادر متن است میان‌برهای صفحه‌کلید کاری نمی‌کنند، پس ابتدا روی بخش خالی صفحه کلیک کنید.

مقایسه آن

از این برای دیدن این‌که چرا یک الگوریتم این‌طور رفتار می‌کند استفاده کنید: می‌توانید به جلو و عقب بروید، خط شبه‌کد را تماشا کنید و شمارش‌ها را روی داده‌ی یکسان مقایسه کنید. این یک آزمون سرعت نیست. شمارش‌ها از نسخه‌های گام‌به‌گامِ خود ابزار برای هر الگوریتم می‌آیند، نه از مرتب‌سازی زبان برنامه‌نویسی شما، و زمان محاسبه فقط می‌سنجد مرورگر برای آماده کردن گام‌ها چقدر وقت گذاشته است. 10 الگوریتم مرتب‌سازی (11 با Bogosort)، 6 الگوریتم یافتن مسیر و 6 الگوریتم کلاسیک دارد، اما نمی‌توانید کد خودتان را بچسبانید، نقشه‌ی واقعی بارگذاری کنید یا بیش از 120 مورد مرتب کنید. همه‌چیز در مرورگر شما اجرا می‌شود و چیزی به جایی فرستاده نمی‌شود.

ابزارهای مرتبط

سؤالات متداول