Algorithm design & data structure
6.63K subscribers
950 photos
142 videos
175 files
545 links
این کانال برای تمامی علاقه‌مندان به کامپیوتر، مخصوصاً حوزه ساختمان داده‌ها و الگوریتم‌ها، مفید می باشد. آشنایی با ریاضیات مقدماتی، برنامه‌نویسی مقدماتی و پیشرفته و همچنین شی‌گرایی می‌تواند در درک بهتر مفاهیم این درس کمک‌ کند.

👨‍💻Admin👉 @Se_mohamad
Download Telegram
@AlgorithmDesign_DataStructuer (2).pdf
16.8 MB
🌟 معرفی کتاب: Mathematics for Machine Learning 🌟

اگر به دنبال منبعی کامل و جامع برای یادگیری ریاضیات مورد نیاز در ماشین لرنینگ هستید، کتاب "Mathematics for Machine Learning" گزینه‌ای عالی است!

📘 درباره کتاب:
این کتاب توسط Marc Peter Deisenroth, A. Aldo Faisal, و Cheng Soon Ong نوشته شده و مفاهیم ریاضی پایه‌ای که برای درک و پیاده‌سازی الگوریتم‌های ماشین لرنینگ لازم است را به زبانی ساده و قابل فهم توضیح می‌دهد.

📚 موضوعات پوشش داده شده:

جبر خطی
حساب دیفرانسیل و انتگرال
احتمالات و آمار
بهینه‌سازی

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍2👏1
This media is not supported in your browser
VIEW IN TELEGRAM
الگوریتم Prim :

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

📝 مراحل الگوریتم Prim:
🎯 شروع از یک راس دلخواه: ابتدا یک راس دلخواه را به عنوان شروع انتخاب می‌کنیم و آن را به مجموعه MST اضافه می‌کنیم.

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

اضافه کردن راس جدید به MST: راس جدید را به مجموعه MST اضافه می‌کنیم.

🔄 تکرار مراحل: این مراحل را تکرار می‌کنیم تا تمامی راس‌های گراف در مجموعه MST قرار بگیرند.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍1
Attention- Is-All-You- Need.pdf
2.1 MB
📄 معرفی مقاله "Attention Is All You Need"
مقاله "Attention Is All You Need" یکی از مهم‌ترین مقالات در حوزه مدل‌های زبانی بزرگ (LLM) و یادگیری عمیق است که توسط Vaswani و همکاران در سال 2017 منتشر شده است. این مقاله معماری جدیدی به نام ترانسفورمر (Transformer) معرفی می‌کند که به‌طور کامل بر مکانیزم توجه (Attention) تکیه دارد و از شبکه‌های بازگشتی (RNN) یا شبکه‌های کانولوشنی (CNN) استفاده نمی‌کند.

📚 چکیده‌ای از مقاله:
ترانسفورمرها با استفاده از مکانیزم توجه چند-رأس (Multi-head Attention) قادر به مدل‌سازی وابستگی‌های طولانی مدت در داده‌ها هستند. این معماری به صورت موازی‌سازی بهتری نسبت به مدل‌های قبلی امکان‌پذیر می‌سازد و باعث شده تا مدل‌های زبانی بسیار بزرگ‌تری مانند GPT و BERT توسعه یابند.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
الگوریتم Kruskal یکی از الگوریتم‌های مشهور در نظریه گراف‌ها است که برای پیدا کردن حداقل درخت پوشای یک گراف وزن‌دار و متصل به کار می‌رود. حداقل درخت پوشا (MST) زیرمجموعه‌ای از یال‌های گراف است که تمام راس‌ها را پوشش می‌دهد و مجموع وزن یال‌هایش کمینه است.

📝 مراحل الگوریتم Kruskal:

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

🌳 شروع با راس‌ها: یک مجموعه از راس‌های گراف به عنوان درخت پوشا (MST) با هیچ یالی شروع می‌کنیم.

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

🔄 تکرار مراحل: این مراحل را تا زمانی که تعداد یال‌های درخت پوشا به تعداد راس‌ها منهای یک برسد، تکرار می‌کنیم.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
شبکه‌های عصبی گراف (Graph Neural Networks یا GNNs) یک دسته از شبکه‌های عصبی هستند که به طور خاص برای کار با داده‌های ساختاریافته به شکل گراف طراحی شده‌اند. در شبکه‌های عصبی سنتی، داده‌ها به طور معمول در ساختاری شبکه‌ای مانند (مثلاً تصاویر، دنباله‌ها) نمایش داده می‌شوند. 📊 با این حال، بسیاری از داده‌های دنیای واقعی به طور طبیعی‌تر می‌توانند به صورت گراف‌ها نمایش داده شوند که شامل گره‌ها (رئوس) و یال‌ها (اتصالات بین گره‌ها) هستند. 🔗 GNNها به طور موثری روابط و وابستگی‌های بین گره‌ها در یک گراف را به‌دست می‌آورند، که آنها را برای مجموعه‌ای از کاربردها در زمینه‌هایی مانند تحلیل شبکه‌های اجتماعی، زیست‌شناسی مولکولی 🧬، و سیستم‌های توصیه‌گر مناسب می‌سازد.

مفاهیم کلیدی GNNها


1. ساختار گراف:
- گره‌ها: موجودیت‌ها در گراف (مثلاً کاربران در یک شبکه اجتماعی، اتم‌ها در یک مولکول). 👤
- یال‌ها: اتصالات بین گره‌ها که می‌توانند جهت‌دار یا بدون جهت، وزن‌دار یا بدون وزن باشند (مثلاً دوستی‌ها، پیوندهای شیمیایی). 🔗
- ویژگی‌های گره: ویژگی‌ها یا داده‌های مرتبط با هر گره (مثلاً اطلاعات پروفایل کاربران، خواص اتمی). 📄
- ویژگی‌های یال: ویژگی‌ها یا داده‌های مرتبط با هر یال (مثلاً نوع رابطه، نوع پیوند). 🧩

2. انتقال پیام:
- ایده اصلی در GNNها انتقال پیام است، جایی که هر گره اطلاعات (پیام‌ها) را از همسایگان خود جمع‌آوری می‌کند تا وضعیت خود را به‌روزرسانی کند. 📩
- این فرآیند به طور معمول تکراری است، با چندین لایه انتقال پیام که به گره‌ها اجازه می‌دهد اطلاعات را از همسایگان بزرگ‌تری جمع‌آوری کنند. 🔄

3. تعبیه گره‌ها:
- از طریق انتقال پیام، گره‌ها تعبیه‌هایی (نمایش‌های برداری) یاد می‌گیرند که ساختار محلی گراف و ویژگی‌های گره‌ها و همسایگان آنها را به‌دست می‌آورند. 🧠

4. نمایش‌های سطح گراف:
- برای وظایفی که به نمایش سطح کل گراف نیاز دارند (مثلاً طبقه‌بندی گراف)، تعبیه‌های گره‌ها می‌توانند به یک تعبیه سطح گراف واحد تجمیع شوند. 🌐

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍3🙏1
📅 زمان ثبت نام و برگزاری کنکور ارشد و دکترا

📣👨‍💻 @AlgorithmDesign_DataStructuer
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
الگوریتم k-نزدیکترین همسایگان (k-NN):

👥 چیست؟
یک الگوریتم یادگیری ماشین ساده و شهودی برای طبقه بندی و رگرسیون.

🔍 چگونه کار می کند؟
1. ابتدا"k" را انتخاب کنید: تعداد نزدیکترین همسایگان (k) را انتخاب کنید.
2. محاسبه فاصله ها: فاصله بین نقطه داده جدید و تمام نقاط داده آموزشی را اندازه گیری کنید.
3. همسایگان را بیابید: نزدیکترین نقاط داده (همسایگان) 'k' را شناسایی کنید.
4. پیش بینی:
- طبقه بندی: اکثریت رای برچسب های کلاس همسایه ها را بگیرید.
- رگرسیون: میانگین مقادیر همسایگان را محاسبه کنید.

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

⚖️ مزایای:
- آسان برای درک و پیاده سازی.
- انعطاف پذیر: هم برای طبقه بندی و هم برای رگرسیون کار می کند.

⚠️ معایب:
- از نظر محاسباتی برای مجموعه داده های بزرگ گران است.
- حساس به ویژگی های نامربوط و نویز.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍31
کد زیر یک مدل ساده k-NN برای طبقه‌بندی داده‌ها را ایجاد و ارزیابی می‌کند:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# تولید داده‌های نمونه
data = {
'feature1': [2, 4, 4, 4, 6, 6, 8, 8, 8, 8],
'feature2': [4, 2, 4, 6, 4, 6, 2, 4, 6, 8],
'label': [0, 0, 0, 0, 1, 1, 1, 1, 1, 1]
}
df = pd.DataFrame(data)

# جداسازی ویژگی‌ها و برچسب‌ها
X = df[['feature1', 'feature2']]
y = df['label']

# تقسیم داده‌ها به مجموعه‌های آموزش و آزمون
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# ایجاد مدل k-Nearest Neighbors
model = KNeighborsClassifier(n_neighbors=3)

# آموزش مدل
model.fit(X_train, y_train)

# پیش‌بینی با استفاده از مدل آموزش دیده
y_pred = model.predict(X_test)

# ارزیابی مدل
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy * 100:.2f}%')

# تست مدل با داده جدید
new_data = np.array([[2, 4]])
new_pred = model.predict(new_data)
print(f'Prediction for new data [feature1=5, feature2=5]: {new_pred[0]}')
👍10
This media is not supported in your browser
VIEW IN TELEGRAM
برج هانوی 🏗
این مساله شامل سه میله و تعدادی دیسک با اندازه‌های متفاوت است که می‌بایست از یکی از میله‌ها به میله‌ی دیگر منتقل شوند، با رعایت قوانین زیر:

تنها یک دیسک در هر زمان می‌تواند جابجا شود.
هر دیسک بزرگ‌تر نمی‌تواند روی دیسک کوچک‌تر قرار گیرد.
تنها دیسک بالایی هر میله می‌تواند جابجا شود.
توضیح مساله 🎯
هدف این است که همه دیسک‌ها را از میله‌ی اولیه (مثلاً A) به میله‌ی مقصد (مثلاً C) منتقل کنیم، با استفاده از میله‌ی واسطه (مثلاً B). فرض کنید n تعداد دیسک‌ها باشد.

الگوریتم بازگشتی 🔄
برای حل این مساله از الگوریتم بازگشتی استفاده می‌شود. مراحل الگوریتم به صورت زیر است:

انتقال n-1 دیسک از میله A به میله B با استفاده از میله C به عنوان میله کمکی.
انتقال دیسک n-ام از میله A به میله C.
انتقال n-1 دیسک از میله B به میله C با استفاده از میله A به عنوان میله کمکی.
این روند تا زمانی که تنها یک دیسک باقی بماند ادامه می‌یابد، در این حالت، دیسک مستقیم از میله A به میله C منتقل می‌شود.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍4
یادگیری با نظارت در هوش مصنوعی

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

مراحل فرآیند یادگیری با نظارت:

1. داده‌های خام: جمع‌آوری داده‌های اولیه برای پردازش توسط الگوریتم.
2. نظارت: برچسب‌گذاری داده‌ها توسط انسان یا به صورت خودکار.
3. مجموعه داده آموزشی: تقسیم داده‌ها به مجموعه آموزشی و مجموعه تست.
4. الگوریتم: آموزش الگوریتم با استفاده از داده‌های آموزشی.
5. پردازش: استفاده از الگوریتم آموزش دیده برای پردازش داده‌های جدید.
6. خروجی: پیش‌بینی یا دسته‌بندی داده‌های جدید.

نکات کلیدی:

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

یادگیری با نظارت یک روش قدرتمند برای حل مسائل دنیای واقعی است.

📊📚🤖
#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍1
Complexity-lec-ad-s20.pptx
1.6 MB
💡 پیچیدگی زمانی کد - رازهای بهینه‌سازی الگوریتم‌ها 💡

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

🌟 در جزوه پیچیدگی زمانی کد، یاد می‌گیریم که چگونه بهترین الگوریتم‌ها را انتخاب و بهینه‌سازی کنیم تا در کمترین زمان ممکن به بهترین نتایج دست یابیم. از O(1) تا O(n!)، هر کدام داستانی دارند که باید کشف کنیم.

📊 اگر می‌خواهید کد شما مانند یک نینجا سریع و کارآمد باشد، حتماً این جزوه را مطالعه کنید! 📝

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔍 تبدیل کانولوشن در بینایی کامپیوتری 🔍

📸 کانولوشن با کرنل (یا فیلتر) نه تنها در شبکه‌های عصبی پیچشی (CNNs) استفاده می‌شود، بلکه یکی از عناصر کلیدی بسیاری از الگوریتم‌های بینایی کامپیوتری نیز می‌باشد. در این فرآیند، یک ماتریس کوچک از اعداد (کرنل یا فیلتر) را بر روی تصویر خود اعمال می‌کنیم و آن را بر اساس مقادیر فیلتر تغییر می‌دهیم.

📊 مقادیر نقشه ویژگی‌های خروجی بر اساس فرمول زیر محاسبه می‌شوند که در آن تصویر ورودی با ( f ) و کرنل با ( h )نمایش داده می‌شوند. شاخص‌های سطرها و ستون‌های ماتریس نتیجه به ترتیب با ( m ) و ( n ) نشان داده می‌شوند:

G[m,n] = (f*h)[m,n] = ∑ j ∑ k h[j, k] f[m-j, n-k]

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

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

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍6
🔹Divide and Conquer تقسیم و غلبه 🔹

روش Divide and Conquer (تقسیم و غلبه) یکی از تکنیک‌های اساسی و پرکاربرد در طراحی الگوریتم‌ها و ساختمان داده‌ها است. این روش به حل مسائل پیچیده با تقسیم آنها به زیرمسائل کوچکتر و ساده‌تر می‌پردازد. فرآیند کلی این تکنیک به سه مرحله اصلی تقسیم می‌شود:

1. تقسیم (Divide): مسئله اصلی به چند زیرمسئله کوچکتر تقسیم می‌شود که همگی نسخه‌های کوچکتری از مسئله اصلی هستند.
2. غلبه (Conquer): هر یک از زیرمسائل به طور مستقل حل می‌شوند. اگر زیرمسائل به اندازه کافی کوچک باشند، به صورت مستقیم حل می‌شوند؛ در غیر این صورت، به طور بازگشتی به همان روش تقسیم می‌شوند.
3. ترکیب (Combine): نتایج حاصل از حل زیرمسائل ترکیب شده و راه‌حل نهایی مسئله اصلی بدست می‌آید.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍2🔥1
Aritificial-Intelidence.rar
196.3 MB
🔹 دوره هوش مصنوعی با اسلایدهای ترجمه‌شده دانشگاه California, Berkeley در دانشگاه ایلام 🔹

👨‍🏫 مدرس: دکتر مظفر بگ محمدی

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

🔗 لینک آموزش هوش مصنوعی

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍4😍2
This media is not supported in your browser
VIEW IN TELEGRAM
الگوریتم بلمن-فورد
الگوریتم بلمن-فورد یک روش معروف برای پیدا کردن کوتاه‌ترین مسیرها در گراف‌های وزن‌دار است. برخلاف الگوریتم دیکسترا، بلمن-فورد می‌تواند وزن‌های منفی را مدیریت کند و حلقه‌های منفی را تشخیص دهد.

نکات کلیدی:
مقداردهی اولیه: شروع با فاصله بی‌نهایت برای همه رأس‌ها و صفر برای رأس مبدأ.
به‌روزرسانی (Relaxation): در V-1 مرحله، همه یال‌ها بررسی و فاصله‌ها به‌روزرسانی می‌شوند.
تشخیص حلقه‌های منفی: در پایان، بررسی مجدد یال‌ها برای تشخیص حلقه‌های منفی.
کاربردها:
- پیدا کردن کوتاه‌ترین مسیرها در گراف‌های وزن‌دار با وزن‌های منفی
- تشخیص حلقه‌های منفی در گراف‌ها

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍2
@AlgorithmDesign_DataStructuer.pdf
6.2 MB
یه چیت‌شیت عالی برای یادگیری ماشین که مفاهیم کلیدی زیادی رو پوشش می‌ده! 🤖

این چیت‌شیت شامل موضوعات مهمی مثل نظریه بیز، مبادله بایاس و واریانس، تنظیم، دسته‌بندی داده‌های نامتوازن، انواع رگرسیون، ساختارهای داده، و شبکه‌های عصبی پیچشی می‌شه. 📚

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

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👌4👍1
This media is not supported in your browser
VIEW IN TELEGRAM
الگوریتم جستجوی هزینه یکنواخت (Uniform Cost Search - UCS). 🌐

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

🛠 مراحل اجرای الگوریتم UCS:
1. شروع از گره مبدأ: الگوریتم از گره مبدأ با هزینه صفر شروع می‌کنه و اون رو به صف اولویت (Priority Queue) اضافه می‌کنه.
2. تکرار تا زمانی که صف اولویت خالی نباشه:
- گره‌ای که کمترین هزینه رو داره از صف اولویت خارج می‌شه.
- اگر این گره همون گره مقصد باشه، مسیر پیدا شده و الگوریتم خاتمه می‌یابد.
- در غیر این صورت، تمام همسایه‌های این گره بررسی می‌شن و هزینه رسیدن به هر همسایه محاسبه می‌شه.
3. ادامه تا پیدا کردن مقصد: این مراحل تکرار می‌شن تا زمانی که به گره مقصد برسیم یا صف اولویت خالی بشه.

🔍 خصوصیات الگوریتم UCS:
- کامل بودن: اگر مسیر به مقصد وجود داشته باشه، UCS حتماً اون رو پیدا می‌کنه.
- بهینه بودن: UCS همیشه کوتاه‌ترین مسیر (کمترین هزینه) رو پیدا می‌کنه.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5
growth.pdf
645.5 KB
🚀 رشد توابع یکی از مسائل مهم در ساختمان داده است. 📊 فایل پی‌دی‌اف پیوست با استفاده از حد، رشد برخی از توابع را اثبات می‌کند و نشان می‌دهد کدام توابع رشد بیشتری دارند. 🔍📈

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5
🎓 دانشگاه تهران دوره‌ای با عنوان مدل‌های ترنسفورمر و دیفیوژن برگزار می‌کند! این دوره در دانشکده ریاضی، آمار و علوم کامپیوتر دانشگاه تهران برگزار می‌شود و ثبت‌نام برای عموم رایگان است. 🚀

👨‍🏫 تحت هدایت سالار کلانتری، این دوره شما را با مفاهیم پیشرفته و کاربردی مدل‌های ترنسفورمر و دیفیوژن آشنا خواهد کرد. یک نکته بسیار هیجان‌انگیز این است که بعد از هر جلسه، ویدیوهای ضبط شده در یوتیوب قرار می‌گیرند، بنابراین هیچ بخشی از درس را از دست نخواهید داد! 🎥🌐

🔗 لینک به ویدیوهای ضبط شده

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

🔗 فرم ثبت‌نام در دوره

🎉 با تشکر از دانشکده ریاضی، آمار و علوم کامپیوتر دانشگاه تهران برای این فرصت بی‌نظیر! 🌟

فرصت را از دست ندهید و همین حالا ثبت‌نام کنید! 🌐📚

🔗 همچنین، لطفاً این اطلاعیه را با دوستان خود به اشتراک بگذارید تا آن‌ها نیز بتوانند از این دوره بهره‌مند شوند! 🤝📢

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍1