موتور کشف الگوریتم: از یک چارچوب ریاضی تا ابزاری که واقعاً کشف میکند
PCT TECH @ 3 Nov. 2026 : pct invented pro algorithm by 17027
در سال ۲۰۲۶، یکی از بزرگترین کنفرانسهای علوم کامپیوتر جهان (COLT) یک مسئله باز رسمی مطرح کرد: روشهای یادگیری ماشین امروزی، وقتی با قوانین الگوریتمی یا جبری گسسته روبرو میشوند، شکست میخورند. دلیلش نبود یک «سوگیری استقرایی» به سمت کمینهسازی پیچیدگی الگوریتمی است. و از جامعه علمی خواست که بدون جستجوی ترکیبیاتی ، اصول موضوعه الگوریتمی گسسته را کشف کنند.
روی یک چارچوب ریاضی کار کردم تا پاسخی برای این مسئله پیدا کنم...

_ چهار چیز که باید از هم تفکیک شوند:
قبل از هر چیز، باید چهار مفهوم بنیادین را از هم جدا کنیم. بدون این تفکیک، بحث بیمعنی است.
فرمول چیست؟
فرمول یک بیان نمادین است. یک رابطه که با نمادها نوشته میشود. مثلاً: «مساحت دایره برابر است با عدد پی ضربدر مربع شعاع.» این یک فرمول است. یک توصیف. یک حقیقت ریاضی. بدون اجرا. بدون محاسبه. فقط یک بیان.
فرمول جواب میدهد به سؤال «چه چیزی درست است؟» — و هیچ کاری با «چطور به آن برسیم» ندارد.
تابع چیست؟
تابع یک رابطه ریاضی است: به هر ورودی، یک خروجی میدهد. تمام.
مثال: تابع «مربع». ۳ میدهید، ۹ میگیرید. ۴ میدهید، ۱۶ میگیرید. یک محاسبه. یک جواب. تمام.
تابع «چه چیزی» را میگوید، نه «چطور». تابع میگوید چه ورودی به چه خروجی میرسد، ولی نمیگوید با چه فرآیندی.
الگوریتم چیست؟
الگوریتم یک رویه است. یک توالی از گامها. یک فرآیند. یک حالت اولیه دارد، در هر گام حالت را تغییر میدهد، یک شرط توقف دارد، و در پایان خروجی تولید میکند.
مثال: الگوریتم مرتبسازی. یک لیست به هم ریخته میگیرد، در هر گام دو عنصر را مقایسه میکند، اگر جایشان غلط بود جابهجا میکند، تا وقتی لیست مرتب شود. این یک فرآیند است، نه یک محاسبه ساده.
الگوریتم جواب میدهد به سؤال «چطور به جواب برسیم؟» — و این سؤال، سؤال بنیادین علوم کامپیوتر است.
نرمافزار چیست؟
نرمافزار یک الگوریتم اجراشده است. یک الگوریتم که در یک زبان برنامهنویسی نوشته شده، در حافظه یک کامپیوتر قرار گرفته، و روی دادههای واقعی اجرا میشود.
نرمافزار، الگوریتم را از دنیای نظری به دنیای واقعی میآورد. یک الگوریتم میتواند روی کاغذ باشد. نرمافزار، همان الگوریتم است که واقعاً کار میکند.
تفاوت در عمل: چهار سطح
فرض کنید یک لیست به هم ریخته داریم: [۳, ۱, ۲].
سطح اول — فرمول: یک بیان ریاضی میگوید: «لیست مرتبشده لیستی است که در آن هر عنصر کوچکتر یا مساوی عنصر بعدی باشد.» این یک تعریف است. یک فرمول. ولی نمیگوید چطور به آن برسیم.
سطح دوم — تابع: یک تابع ریاضی میگوید: «اگر این لیست را به من بدهید، من لیست [۱, ۲, ۳] را برمیگردانم.» این یک رابطه است. یک جواب. ولی نمیگوید چطور محاسبه شده.
سطح سوم — الگوریتم: یک رویه میگوید: «اول ۳ و ۱ را مقایسه کن، جابهجا کن، حالا [۱, ۳, ۲] داری. بعد ۳ و ۲ را مقایسه کن، جابهجا کن، حالا [۱, ۲, ۳] داری. تمام.» این یک فرآیند است. یک توالی گام.
سطح چهارم — نرمافزار: یک برنامه کامپیوتری این رویه را اجرا میکند. روی یک کامپیوتر واقعی. با یک لیست واقعی. در زمان واقعی. و لیست مرتبشده را تولید میکند.
تفاوت در چیست؟
فرمول، تعریف میکند.
تابع، نتیجه را میگوید.
الگوریتم، فرآیند را میسازد.
نرمافزار، فرآیند را اجرا میکند.
این چهار سطح، چهار سطح انتزاع هستند. و علوم کامپیوتر، علم سطح سوم و چهارم است.
---
ارزش الگوریتم و علوم کامپیوتر نسبت به ریاضیات محض:
این سؤال مهم است. خیلیها فکر میکنند ریاضیات، پایه همه چیز است. اگر ریاضیات را داشته باشیم، بقیه خودشان میآیند... این درست نیست و دلیلش دقیقاً همان تفاوت فرمول و الگوریتم است.
ریاضیات محض: چه چیزی هست
ریاضیات محض به «چه چیزی درست است» میپردازد. یک قضیه را اثبات میکند. یک رابطه را نشان میدهد. یک ساختار را توصیف میکند.
ریاضیات محض، بینهایت است. بینهایت قضیه وجود دارد. بینهایت ساختار. بینهایت رابطه.
ولی ریاضیات محض، کاری با محدودیتهای دنیای واقعی ندارد. یک قضیه میتواند درست باشد ولی محاسبهاش میلیاردها سال طول بکشد. یک ساختار ریاضیات میتواند وجود داشته باشد ولی شاید قابل ساخت نباشد.
علوم کامپیوتر: چه چیزی هست
علوم کامپیوتر به «چه چیزی قابل محاسبه است و چطور» میپردازد. نه فقط «چه چیزی درست است». بلکه «چه چیزی میتواند محاسبه شود، با چه منابعی، در چه زمانی».
علوم کامپیوتر، محدود است. محدود به منابع. محدود به زمان. محدود به حافظه. و همین محدودیت، ارزش اصلیاش است.
یک ریاضیدان میگوید: «این مسئله جواب دارد.»
یک دانشمند کامپیوتر میپرسد: «این جواب، در چه زمانی؟ با چه حافظهای؟ با چه دقتی؟»
این تفاوت، بنیادین است.
مثال ساده:
ریاضیدان میگوید: «برای هر عدد، میتوانم اول بودنش را بررسی کنم. الگوریتمی وجود دارد که در زمان محدود این کار را میکند. این را میتوانم اثبات کنم.»
دانشمند کامپیوتر میپرسد: «این الگوریتم، برای اعداد هزار رقمی چقدر طول میکشد؟ اگر یک میلیارد سال طول بکشد، چه فایده دارد؟ راه سریعتری هست؟»
این دومی، سؤال علوم کامپیوتر است. و همین سؤال، رمزنگاری مدرن را ساخت. رمزنگاری، بر پایه این است که بعضی مسائل، جواب دارند ولی محاسبهشان طول میکشد. اگر جوابی نبود، رمزنگاری معنی نداشت. اگر جواب در کسری از ثانیه محاسبه میشد، رمزنگاری هم معنی نداشت. رمزنگاری، در فضای بین «جواب دارد» و «سریع محاسبه میشود» زندگی میکند.
و این فضا، فضای علوم کامپیوتر است... نه ریاضیات محض.
ارزش نرمافزار:
نرمافزار، الگوریتم را از دنیای نظری به دنیای واقعی میآورد. یک الگوریتم میتواند روی کاغذ باشد. نرمافزار، آن الگوریتم است که روی یک کامپیوتر واقعی، با دادههای واقعی، در زمان واقعی، کار میکند.
و نرمافزار، ارزش اقتصادی دارد. یک الگوریتم روی کاغذ، صفر تومان ارزش دارد. یک نرمافزار پیادهشده، میتواند میلیاردها تومان ارزش داشته باشد.
دلیلش ساده است. فرمول، روی کاغذ میماند. نرمافزار، در جیب میلیونها نفر کار میکند.
این تفاوت، تفاوت بین یک مقاله ریاضی و یک محصول است. هر دو ارزشمندند. ولی ارزششان از جنس دیگری است.
چرا کشف الگوریتم سختتر از کشف تابع است
وقتی دادهای دارید، دو کار میتوانید بکنید:
کار اول: یک تابع پیدا کنید که داده را تقریب بزند. مثلاً اگر دادههای شما روند خطی دارند، یک خط راست بکشید. اسمش «برازش تابع» است. یادگیری ماشین امروزی این کار را خیلی خوب انجام میدهد.
کار دوم: الگوریتمی پیدا کنید که داده را تولید کرده است. این یعنی ساختار درونی، توالی گامها، شرطها. این کاری است که یادگیری ماشین امروزی نمیتواند انجام دهد.
دلیل ساده است. یادگیری ماشین برای تقریب طراحی شده. وقتی داده از یک الگوریتم پیچیده میآید، نزدیکترین تابع ساده، یک تقریب ضعیف است.
مثال ملموس: فرض کنید داده از الگوریتم برج هانوی میآید. این الگوریتم برای n دیسک، تعداد حرکتی برابر با دو به توان n منهای یک لازم دارد. اگر یک شبکه عصبی را روی این داده آموزش دهید، یک تابع نمایی یاد میگیرد. ولی این تابع، الگوریتم نیست. الگوریتم برج هانوی یک ساختار بازگشتی دارد: برای n دیسک، اول n-۱ دیسک را جابهجا کن، بعد ... . این ساختار، در تابع نمایی گم میشود.
هدف کشف الگوریتم: بازگرداندن این ساختار. نه تقریب آن.
و این، تفاوت بین «حدس زدن» و «کشف کردن» است.
چرا این کار سخت است؟
سه مانع اصلی وجود دارد:
مانع اول — جستجوی ترکیبیاتی: اگر بخواهید همه ساختارهای ممکن را امتحان کنید، عدد حالتها بهطور انفجاری رشد میکند. برای ساختار با n عنصر، تعداد جدولهای ممکن، از تعداد اتمهای جهان بیشتر میشود. جستجوی کامل، غیرممکن است.
مانع دوم — نبود سوگیری: یادگیری ماشین امروزی، سوگیری به سمت توابع پیوسته دارد. توابع گسسته، در فضای پارامترهای شبکههای عصبی، بهسختی نمایش داده میشوند. مدل، ساختار گسسته را «هموار» میکند و از دست میدهد.
مانع سوم — تأیید در برابر برازش: یک تابع میتواند داده را دقیقاً برازش کند (خطای صفر) ولی ساختار اشتباه داشته باشد. تأیید اینکه یک ساختار واقعاً همان الگوریتم زیرین است، نیازمند تأیید اصول موضوعه است، نه فقط تطبیق خروجی.
ایده من چه بود:
وقتی این مسئله را دیدم، فهمیدم که مسئله اصلی، نبود یک سوگیری درست است. روشهای موجود یا جستجوی کامل میکنند (کند)، یا سوگیری پیوستگی دارند (غلط).
ایده من: از یک سوگیری هندسی استفاده کنم. بهجای جستجوی کامل، از یک ساختار از پیش موجود استفاده کنم تا فضای جستجو را کوچک کنم.
این ساختار از چارچوب ریاضی من میآمد. یک معیار شباهت چندبُعدی که بین هر جفت عنصر، یک عدد تولید میکند. این معیار از شش بُعد مختلف ساخته شده برای حروف — نه فقط یک بُعد.
ایده کلیدی: بهجای اینکه همه جفتهای عناصر را به یک شکل امتحان کنم، جفتهایی که در فضای ششبُعدی به هم نزدیکترند را اول امتحان کنم. این باعث میشود اطلاعات ساختاری سریعتر استخراج شوند، بدون جستجوی کامل.
چه ساختم: کد ۱۷۰۲۷، با دو بخش
کد نهایی من، دو بخش دارد. هر دو، مستقل و آزمونشده. و هر دو در یک فایل، قابل اجرا در کنار هم.
بخش اول — کشف ساختار جبری:
موتوری که به یک عملیات جعبهسیاه نگاه میکند و تشخیص میدهد آیا آن عملیات یک گروه است یا نه.
گروه در ریاضیات یعنی ساختاری با چهار قانون مشخص:
بستار: ترکیب هر دو عنصر، یک عنصر از همان مجموعه میدهد.
شرکتپذیری: ترتیب ترکیب مهم نیست، وقتی سه عنصر با هم ترکیب میشوند.
هادی: یک عنصر خاص وجود دارد که ترکیبش با هر عنصر، همان عنصر را میدهد.
وارون: برای هر عنصر، یک عنصر دیگر وجود دارد که ترکیبشان هادی میدهد.
موتور من جدول کامل عملیات را میسازد و هر چهار قانون را دقیق تأیید میکند. علاوه بر این، تشخیص میدهد که گروه آبلی است یا غیرآبلی، و مرتبه هر عنصر را محاسبه میکند.
آزمون روی سه ساختار مختلف:
- ساختار ساده و آبلی: درست بهعنوان گروه آبلی شناخته شد.
- ساختار پیچیده و غیرآبلی: درست بهعنوان گروه غیرآبلی شناخته شد.
- ساختار ناقص: درست تشخیص داده شد که گروه نیست — یک monoid است، چون وارون ندارد.
این تفکیک ظریف مهم است. خیلی از روشها ساختار ناقص را با گروه اشتباه میگیرند. موتور من این کار را نمیکند.
بخش دوم — کشف در حوزههای دیگر:
چارچوبی گسترده که میتواند در چند حوزه کشف کند. اولین الگوریتمی که در آن ساختم، الگوریتم کشف فرم بسته برای توالیهای عددی با رشد خاص است.
این الگوریتم روی یک توالی معروف ریاضی (که همه در دبیرستان با آن آشنا میشوند) آزمون شد. نتیجه: پیشبینی با خطای کمتر از یک در هزار.
مهمتر: وقتی روی توالیهای دیگری آزمون شد که با نسبت دیگری رشد میکنند، صریحاً رد کرد. نگفت «شاید». گفت «این توالی از خانوادهای نیست که من میتوانم کشف کنم.»
این ویژگی، خودش یک دستاورد است. در علم، صادق بودن درباره اینکه چه چیزی را نمیدانی، بهاندازه دانستن مهم است.
چرا این دو بخش با هم هستند:
بخش اول، کشف ساختار جبری را نشان میدهد — یک مورد خاص از کشف الگوریتم.
بخش دوم، نشان میدهد که این ایده میتواند به حوزههای دیگر تعمیم یابد — یک چارچوب، نه یک تکابزار.
با هم، نشان میدهند که کشف الگوریتم، نه یک ایده یکباره، بلکه یک معماری است که میتواند رشد کند.
نتیجه: 9 آزمون، 9 موفقیت
هر دو بخش روی دادههای شناختهشده آزمون شدند. مجموعاً نه آزمون:
| آزمون | نتیجه |
|--------|--------|
| ساختار جبری اول | گروه آبلی — درست |
| ساختار جبری دوم | گروه غیرآبلی — درست |
| ساختار جبری سوم | monoid (نه گروه) — درست |
| توالی اول | پیشبینی با خطای کمتر از یک در هزار |
| توالی دوم | پیشبینی دقیق |
| توالی سوم (نامناسب) | رد صریح |
| توالی چهارم (نامناسب) | رد صریح |
| گراف ساختارمند | ساختار درست تشخیص داده شد |
| سنتز الگوریتم | دقت کامل |
9 آزمون، 9 موفقیت.
این یعنی موتور کشف من واقعاً کار میکند. نه بهعنوان ادعا. بهعنوان نتیجه آزمونشده...
---
چه چیزی این را از قبل متفاوت میکند:
چارچوب ریاضی من همهچیز را توصیف میکرد... اعداد را تحلیل میکرد... ساختارها را اندازه میگرفت. ولی چیزی تولید نمیکرد.
حالا تولید میکند.
- الگوریتم کشف میکند.
- جدول میسازد.
- فرمول پیدا میکند.
- جواب میدهد.
این تغییر بنیادین است. از توصیف به تولید. از اندازهگیری به کشف. از ریاضیات به علوم کامپیوتر....
---
_ کاربردها:
در علم:
- کشف فرمولهای بسته در ریاضیات محاسباتی
- تأیید ساختارهای جبری در رمزنگاری
- سنتز الگوریتم در یادگیری ماشین
در صنعت:
هر جایی که یک جعبه سیاه دارید و میخواهید بفهمید داخلش چه خبر است:
- سیستم مالی با رفتار ناشناخته
- شبکه عصبی با تصمیمهای غیرقابل توضیح
- پایگاه داده با ساختار نامعلوم
- سیستم زیستی با الگوی ناشناخته
در همه این موارد، موتور کشف میتواند کمک کند ساختار زیرین را کشف کنید.
چرا این کاربردها فقط با ریاضیات محض ممکن نبود:
این نقطه کلیدی است. تمام این کاربردها، الگوریتم میخواهند، نه فرمول.
یک فرمول میتواند بگوید «این ساختار جبری وجود دارد.» ولی نمیتواند آن را در یک سیستم مالی کشف کند. برای این کار، یک فرآیند لازم است — یک موتور که ورودی میگیرد، گام به گام اجرا میکند، و در پایان یک کشف تولید میکند.
این تفاوت بین «دانستن» و «توانستن» است. ریاضیات محض، دانستن را فراهم میکند. علوم کامپیوتر، توانستن را.
ارزش واقعی:
باید صادق باشم.
این موتور جادو نیست. محدودیت دارد. برای ساختارهای بزرگتر از حد خاصی کند میشود. برای توالیهایی که با نسبتهای دیگر رشد میکنند رد میکند. برای حوزههای جدید باید الگوریتم جدید اضافه شود.
ولی ارزش اصلی در یک چیز است: این موتور، اولین چیزی است که واقعاً کشف میکند، نه فقط توصیف.
طول کشید تا از توصیف به تولید برسم... از ریاضیات محض به علوم کامپیوتر. از فرمول به الگوریتم. از تابع به نرمافزار...
این مسیر ساده نبود.
مسیر بعدی:
این شروع است، نه پایان.
- افزودن حوزههای جدید به موتور کشف (رمزنگاری، بهینهسازی، تحلیل متن)
- ساخت الگوریتمهای کشف قویتر
- آزمون روی دادههای واقعی صنعتی
تفاوت تابع و الگوریتم، تفاوت «چه» و «چطور» است.
تفاوت ریاضیات محض و علوم کامپیوتر، تفاوت «دانستن» و «توانستن» است.
تفاوت فرمول و نرمافزار، تفاوت «روی کاغذ» و «در جیب میلیونها نفر» است.
یادگیری ماشین امروزی در «چه» و «دانستن» و «روی کاغذ» متوقف شده. من در «چطور» و «توانستن» و «در جیب میلیونها نفر» قدم برداشتم.
یک چارچوب ریاضی ساختم... کسی نمیدانست به چه کار میآید...
امروز موتوری دارم با دو بخش. یک بخش کشف ساختار جبری، یک بخش کشف در حوزههای دیگر. هر دو آزمونشده. هر دو در یک کد نهایی، کنار هم.
این یک قدم کوچک است. نه یک انقلاب. ولی قدمی است که واقعاً برداشته شده ... آزمونشده. نه وعده. نه شبیهسازی. یک قدم واقعی.
اگر محقق هستید، اگر مهندس هستید، اگر شرکتی دارید که با دادههای پیچیده سر و کار دارد — با من تماس بگیرید. با تشکر