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

👨‍💻Admin👉 @Se_mohamad
Download Telegram
class SimpleModel(nn.Module):
def __init__(self):
super(SimpleModel, self).__init__()
self.fc1 = nn.Linear(10, 5)
self.fc2 = nn.Linear(5, 2)

def forward(self, x):
x = F.relu(self.fc1(x))
x = self.fc2(x)
return x

در این قسمت، ما یک مدل شبکه عصبی ساده را تعریف می‌کنیم:

تعریف کلاس SimpleModel:

این کلاس از nn.Module ارث‌بری می‌کند که کلاس پایه برای تمام مدل‌های PyTorch است.

متد init برای تنظیم اجزای مدل استفاده می‌شود. در اینجا، ما دو لایه تمام‌وصل (fully connected) را تعریف می‌کنیم:
self.fc1 = nn.Linear(10, 5):
یک لایه خطی که ۱۰ ورودی را به ۵ خروجی تبدیل می‌کند.
self.fc2 = nn.Linear(5, 2):
یک لایه خطی که ۵ ورودی را به ۲ خروجی تبدیل می‌کند.
super(SimpleModel, self).init()
فراخوانی می‌شود تا سازنده کلاس پایه (nn.Module) نیز اجرا شود.
تعریف متد forward:

متد forward مشخص می‌کند که چگونه داده‌ها از طریق شبکه عبور کنند.
x = F.relu(self.fc1(x)):
ورودی x ابتدا از طریق اولین لایه خطی (fc1) عبور می‌کند، سپس تابع فعال‌سازی ReLU بر روی خروجی اعمال می‌شود.
x = self.fc2(x):
خروجی مرحله قبلی به عنوان ورودی به دومین لایه خطی (fc2) داده می‌شود.
در نهایت، خروجی از متد forward بازگشت داده می‌شود.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
اگر دنباله درجه یک گراف بدون جهت 2 و 2 و 3 و 3 و 3 و 3 باشد در آن صـورت تعـداد یال هاي پشتی ( back edge )این گراف در جستجوي DFS برابر است با:
Anonymous Quiz
17%
2
50%
3
25%
4
8%
5
مثالی در مورد پیمایش های درخت که به صورت Preorder , Postorder و Inorder می باشد.

#الگوریتم

📣👨‍💻 @AlgorithmDesign_DataStructuer
Math in machine learning@AlgorithmDesign_DataStructuer.rar
13.3 MB
📚معرفی یک جزوه عالی برای کسانی که تازه می‌خواهند یادگیری ماشین را شروع کنند و در ریاضی ضعیف هستند.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
🙏3💯2😍1
مرتب سازی حبابی (Bubble Sort) با استفاده از کتابخانه Plt :
import matplotlib.pyplot as plt
import random

def bubbleSort(array):
n = len(array)
for i in range(n):
for j in range(0, n - i - 1):
if array[j] > array[j + 1]:

array[j], array[j + 1] = array[j + 1], array[j]
plt.scatter(range(len(array)), array, c='blue')
plt.title("Bubble Sort Visualization")
plt.xlabel("Index")
plt.ylabel("Value")
plt.xticks(range(len(array)))
plt.grid(True, linestyle='--')

plt.pause(0.5)
plt.clf()

random.seed(20)

random_lst = [random.randint(0, 100) for _ in range(15)]
print('Unsorted Array:')
print(random_lst)

plt.figure(figsize=(12, 6))

bubbleSort(random_lst)

print('Sorted Array in Ascending Order:')
print(random_lst)

plt.scatter(range(len(random_lst)), random_lst, c='blue')
plt.title("Bubble Sort Visualization - Sorted Array")
plt.xlabel("Index")
plt.ylabel("Value")
plt.xticks(range(len(random_lst)))
plt.grid(True, linestyle='--')
plt.show()

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
Heuristic methods:

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


#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
def sumOfDigitsHelper(n):
if n == 0:
return 0
return n % 10 + sumOfDigitsHelper(n//10)


a = int(input("Enter your number is a :"))

sumOfDigitsHelper(a)

کد بازگشتی جمعه ارقام عدد

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
سلام دوستان عزیز👋😁

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

امیدوارم بهترین نتیجه را در امتحانات بگیرید😉

@Se_mohamad
🙏16👌4🎉3😍2
یکی از مهم ترین مهارت ها DSA (Data Structure Algorithms) است که هر دانش آموز علوم کامپیوتر باید داشته باشد. اغلب دیده می شود که افرادی که دانش خوبی از این فناوری ها دارند، برنامه نویسان بهتری نسبت به دیگران هستند.

ساختار داده ها(Data Structure) :
ساختار داده به عنوان روشی خاص برای ذخیره و سازماندهی داده ها در دستگاه های ما برای استفاده کارآمد و مؤثر از داده ها تعریف می شود. ایده اصلی استفاده از ساختارهای داده، به حداقل رساندن پیچیدگی های زمانی و مکانی است. یک ساختار داده کارآمد حداقل فضای حافظه را می گیرد و برای اجرای داده ها به حداقل زمان نیاز دارد.

الگوریتم (Algotithm):
الگوریتم به عنوان یک فرآیند یا مجموعه ای از دستورالعمل های کاملاً تعریف شده تعریف می شود که معمولاً برای حل یک گروه خاص از مسائل یا انجام یک نوع خاص از محاسبات استفاده می شود. به بیان ساده تر، مجموعه ای از عملیات است که به صورت گام به گام برای اجرای یک کار انجام می شود.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🌐شبکه عصبی CNN چیست؟ شبکه عصبی کانولوشنال (CNN) نوعی الگوریتم یادگیری عمیق است که از مغز انسان الهام گرفته شده است. این به ویژه برای تجزیه و تحلیل داده های بصری قدرتمند است.

🧩 مولفه اصلی: لایه کانولوشنال لایه کانولوشن قلب یک CNN است. چندین فیلتر را روی تصویر ورودی اعمال می کند، هر فیلتر ویژگی های مختلفی مانند لبه ها، بافت ها و الگوها را تشخیص می دهد. این فرآیند به شبکه اجازه می دهد تا تصویر را با جزئیات درک کند.

در اینجا نحوه کار آن آمده است:

پیچیدگی: شبکه تصویر را در بخش های کوچک اسکن می کند و آن را در سه بعد (ارتفاع، عرض و عمق) بررسی می کند تا جزئیات پیچیده را ثبت کند.

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

ادغام: این مرحله ابعاد نقشه های ویژگی را کاهش می دهد و شبکه را از نظر محاسباتی کارآمد می کند و در عین حال اطلاعات مهم را حفظ می کند.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👌5👍3
در علوم کامپیوتر و برنامه نویسی کامپیوتر، ممکن است یک ساختار داده برای ذخیره داده ها به منظور استفاده از آن با الگوریتم های مختلف انتخاب یا طراحی شود. در برخی موارد، عملیات اساسی الگوریتم به طور محکم با طراحی ساختار داده همراه است. هر ساختار داده حاوی اطلاعاتی در مورد مقادیر داده ها، روابط بین داده ها و - در برخی موارد - توابعی است که می تواند روی داده اعمال شود.

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

#الگوریتم

📣👨‍💻 @AlgorithmDesign_DataStructuer
👍4
@AlgorithmDesign_DataStructuer.pdf
3.9 MB
سوالات یادگیری ماشین دانشگاه اصفهان

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍6
💻🍽 پروژه سیستم خرید آنلاین غذا از رستوران 🍽💻

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

ثبت نام کاربران
مرتب سازی منو به صورت داینامیک
هش رمز عبور برای امنیت بیشتر
مسیریابی بین دو مکان (رستوران و محل تحویل)

🔗 لینک دانلود پروژه و توضیحات تکمیلی:
🌐 github
توضیحات کاملتر و جزئیات پیاده‌سازی این پروژه رو می‌تونید توی گیت‌هاب پیدا کنید. ممنون که همراه ما هستید! 😊
👌5👍4
This media is not supported in your browser
VIEW IN TELEGRAM
پیمایش Inorder در درخت دودویی:

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

الگوریتم به صورت زیر است:

پیمایش زیر درخت چپ
بازدید از گره والد
پیمایش زیر درخت راست
این روش باعث می‌شود که گره‌ها به ترتیب صعودی (از کوچک به بزرگ) بازدید شوند، به شرطی که درخت دودویی جستجو باشد.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍9
This media is not supported in your browser
VIEW IN TELEGRAM
این گیف نشان می دهد که چگونه داده ها از طریق یک شبکه عصبی آموزش دیده جریان می یابند. چگونه ورودی های هر لایه با وزن های آموخته شده ضرب می شوند و چه ترکیبی از عملیات ساده ریاضی نتیجه نهایی را به همراه دارد.
گیف کد تولید شده است. برای بازتولید مراحل یا استفاده از آنها برای متحرک سازی مدل خود، نوت بوک Jupyter زیر را بررسی کنید.

🌐 Jupyter

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
@AlgorithmDesign_DataStructuer.pdf
225.2 KB
📘 نمونه سوال درس ساختمان داده همراه با 📝 پاسخ

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
📉 در این نمودار عملکرد loss، هدف ما کاهش loss به حداقل نیز می باشد، که با استفاده از نزول گرادیانی قابل دستیابی است. ما محاسبه می‌کنیم که هر تغییر در وزن چگونه عملکرد هزینه را تغییر می‌دهد، و از مشتقات جزئی برای به‌روزرسانی وزن‌ها در جهت کاهش عملکرد هزینه استفاده می‌کنیم تا به شیب منفی که به سمت حداقل نیز می‌رود، برسیم.

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

🔄 برای به روزرسانی وزن‌ها و loss، از Backpropagation استفاده می‌شود، که بر اساس قاعده زنجیره‌ای حساب است. این روش برای محاسبه شیب عملکرد هزینه نسبت به وزن‌ها در شبکه مورد استفاده قرار می‌گیرد، سپس این شیب در الگوریتم نزول گرادیانی برای به روزرسانی وزن‌ها و بهبود عملکرد شبکه به کار می‌رود.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👌6👍1
This media is not supported in your browser
VIEW IN TELEGRAM
ساختار شبکه‌های عصبی مصنوعی

🧠نورون‌ها در یک شبکه عصبی مصنوعی به لایه‌هایی سازمان‌دهی شده‌اند. اولین لایه، لایه ورودی نامیده می‌شود و شامل نورون‌هایی است که سیگنال را به شکل داده‌های خارجی دریافت می‌کنند (مثل تصاویر، متن، موقعیت‌ها در یک بازی شطرنج و غیره). این نورون‌ها با نورون‌های حسی در بدن مقایسه می‌شوند که به محرک‌های خارجی پاسخ می‌دهند.

لایه نهایی، لایه خروجی نام دارد. این نورون‌ها سیگنالی را صادر می‌کنند که مربوط به حل مشکل موجود است (مثل شناسایی یک تصویر، انتخاب حرکت بعدی در یک بازی شطرنج و غیره).

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

ممکن است هر تعداد لایه مخفی در ANN وجود داشته باشد، اما معمولاً بهتر است از حداقل تعداد ممکن استفاده شود.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍2👌1
Merge Sort :

برای مشاهده نحوه عملکرد Merge Sort از منظری متفاوت، به تصویر بالا نگاه کنید. همانطور که می بینید، آرایه به قطعات کوچکتر و کوچکتر تقسیم می شود تا زمانی که دوباره با هم ادغام شوند. و همانطور که ادغام اتفاق می افتد، مقادیر هر زیر آرایه با هم مقایسه می شوند تا کمترین مقدار اول باشد.

#الگوریتم

📣👨‍💻 @AlgorithmDesign_DataStructuer
🔥6👍1