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

👨‍💻Admin👉 @Se_mohamad
Download Telegram
مرتب سازی حبابی (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
This media is not supported in your browser
VIEW IN TELEGRAM
انتشار رو به جلو (Forward propagation) :
همانطور که از نام پیداست، داده های ورودی در جهت جلو از طریق شبکه تغذیه می شوند. هر لایه پنهان داده‌های ورودی را می‌پذیرد، آن‌ها را طبق تابع فعال‌سازی پردازش می‌کند و به لایه‌ی متوالی ارسال می‌کند.

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

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5
چرا از توابع فعال سازی(Activation Functions) در شبکه های عصبی استفاده کنیم🤔؟

1️⃣غیر خطی بودن(Non-linearity): داده‌های دنیای واقعی اغلب شامل روابط پیچیده‌ای هستند که توسط یک مدل خطی قابل دریافت نیستند. توابع فعال‌سازی شبکه را قادر می‌سازد تا با اضافه کردن غیرخطی بودن، این الگوهای پیچیده را ثبت کند.

2️⃣مرزهای تصمیم(Decision Boundaries): مدل های خطی فقط می توانند داده ها را با یک خط (یا ابر صفحه در ابعاد بالاتر) جدا کنند. توابع فعال سازی به شبکه اجازه می دهد تا مرزهای تصمیم گیری پیچیده تری ایجاد کند.

3️⃣استفاده از عمق(Depth Utilization): با توابع فعال‌سازی، هر لایه می‌تواند داده‌ها را به شیوه‌ای غیر خطی تبدیل کند و به شبکه‌های عمیق‌تر اجازه می‌دهد تا توابع پیچیده‌تری را نشان دهند.

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

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

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍4
@AlgorithmDesign_DataStructuer (2).pdf
552 KB
اگر می‌خواهید وارد دنیای هوش مصنوعی شوید و هیچ اطلاعی از شبکه‌های عصبی ندارید، پیشنهاد می‌کنم حتماً این جزوه را مطالعه کنید. این جزوه می‌تواند به شما در درک بهتر شبکه‌های عصبی کمک زیادی کند. 🤖📘

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👌5
@AlgorithmDesign_DataStructuer .pdf
24.5 MB
📚📘 معرفی کتاب: درک الگوریتم‌ها 📘📚

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

💡 این کتاب با توضیحات شفاف و مثال‌های کاربردی، به شما کمک می‌کند تا مفاهیم پیچیده الگوریتمی را به راحتی درک کنید. از مبانی پایه‌ای تا مباحث پیشرفته‌تر، همه چیز به زبانی ساده و قابل فهم بیان شده است. 💻📈

🔥 ویژگی‌های برجسته کتاب:

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


🔗 همچنین می‌توانید این پست را با دوستان خود به اشتراک بگذارید تا آن‌ها نیز از این منبع ارزشمند بهره‌مند شوند. 📤👥

#الگوریتم

📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5🙏3🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
پیمایش اول عمق (DFS):

پیمایش اول عمق (Depth-First Search یا DFS) یکی از الگوریتم‌های پیمایش گراف و درخت است. در این روش، ابتدا یک گره را انتخاب کرده و تا زمانی که به گره برگ نرسیده‌ایم، به عمق درخت یا گراف حرکت می‌کنیم. پس از رسیدن به برگ، به گره‌های قبلی بازگشته و همین فرآیند را برای گره‌های دیگر تکرار می‌کنیم.

پیمایش اول سطح (BFS):

پیمایش اول سطح (Breadth-First Search یا BFS) نیز یکی از الگوریتم‌های پیمایش گراف و درخت است. در این روش، ابتدا گره ریشه را بازدید کرده و سپس به ترتیب گره‌های هم‌سطح آن را بازدید می‌کنیم. برای انجام این کار از یک صف (queue) استفاده می‌کنیم.

تفاوت‌های اصلی بین DFS و BFS :

⬅️ساختار داده مورد استفاده: در DFS از پشته (stack) استفاده می‌شود، در حالی که در BFS از صف (queue) استفاده می‌شود.
⬅️مسیر پیمایش: DFS به عمق پیمایش می‌کند و ابتدا به انتهای هر شاخه می‌رود، در حالی که BFS به عرض پیمایش می‌کند و ابتدا همه گره‌های هر سطح را بازدید می‌کند.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer