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

👨‍💻Admin👉 @Se_mohamad
Download Telegram
در علوم کامپیوتر و برنامه نویسی کامپیوتر، ممکن است یک ساختار داده برای ذخیره داده ها به منظور استفاده از آن با الگوریتم های مختلف انتخاب یا طراحی شود. در برخی موارد، عملیات اساسی الگوریتم به طور محکم با طراحی ساختار داده همراه است. هر ساختار داده حاوی اطلاعاتی در مورد مقادیر داده ها، روابط بین داده ها و - در برخی موارد - توابعی است که می تواند روی داده اعمال شود.

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

#الگوریتم

📣👨‍💻 @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
تابع فعال‌سازی Softmax :

تابع فعال‌سازی Softmax یکی از مهمترین و پرکاربردترین توابع فعال‌سازی در شبکه‌های عصبی به ویژه در مدل‌های دسته‌بندی چندکلاسه است. این تابع مقادیر خروجی یک بردار را به توزیعی احتمالی تبدیل می‌کند که مجموع مقادیرش برابر با ۱ است. در واقع، Softmax مقادیر ورودی را به مقادیر بین ۰ و ۱ نگاشت می‌کند و بدین ترتیب احتمال تعلق هر ورودی به هر کدام از کلاس‌ها را مشخص می‌کند.

کاربردها :
1️⃣دسته‌بندی چندکلاسه: تابع Softmax به طور گسترده در مسائل دسته‌بندی چندکلاسه استفاده می‌شود. در این حالت، خروجی شبکه عصبی یک بردار از نمرات (logits) برای هر کلاس است و تابع Softmax این نمرات را به توزیع احتمالات تبدیل می‌کند.
2️⃣مدل‌های یادگیری عمیق: Softmax در لایه خروجی شبکه‌های عصبی به کار می‌رود تا احتمال هر کلاس را پیش‌بینی کند.
3️⃣بازی‌های چند نفره و مدل‌های تصمیم‌گیری: Softmax برای مدل‌سازی توزیع احتمالی تصمیمات و اقدامات استفاده می‌شود.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
🌐 Classification و Localization در یادگیری ماشین و بینایی کامپیوتر 🌐

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

🖼 مثال: فرض کنید یک مدل برای تشخیص حیوانات در تصاویر داریم. این مدل پس از دریافت یک تصویر، اعلام می‌کند که این تصویر مربوط به یک "گربه" است.

📍 Localization (محلی‌سازی):
در محلی‌سازی، علاوه بر شناسایی نوع شیء موجود در تصویر، هدف تعیین محل دقیق آن در تصویر نیز می‌باشد. این شامل رسم یک کادر مرزی (Bounding Box) دور شیء مورد نظر است تا محل دقیق آن مشخص شود.

🖼 مثال: در همان مثال قبلی، مدل محلی‌سازی علاوه بر تشخیص "گربه"، یک کادر مرزی دور سگ رسم می‌کند تا محل دقیق آن در تصویر

#هوش_مصنوعی

📣👨‍💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
🔢 فشرده‌سازی داده‌ها با Huffman Coding 🔢

📊فشرده سازی داده ها (Huffman Coding) چیست؟

فشرده سازی داده ها یکی از الگوریتم‌های مشهور فشرده‌سازی داده‌هاست که توسط دیوید هافمن در سال ۱۹۵۲ ابداع شد. این الگوریتم با استفاده از فرکانس وقوع کاراکترها در داده، کدهایی با طول متغیر تولید می‌کند تا داده‌ها را به صورت بهینه فشرده کند.

🔍 چگونه کار می‌کند؟
1. تحلیل فرکانس: ابتدا فرکانس وقوع هر کاراکتر در داده محاسبه می‌شود.
2. ساخت درخت هافمن:
- دو کاراکتری که کمترین فرکانس را دارند انتخاب و با هم ترکیب می‌شوند تا یک گره جدید ایجاد کنند.
- این فرآیند تکرار می‌شود تا زمانی که تنها یک گره باقی بماند که ریشه درخت هافمن است.
3. تخصیص کدها: به هر کاراکتر با پیمایش درخت از ریشه تا برگ‌ها، کدی اختصاص داده می‌شود. مسیر حرکت به سمت چپ معمولاً با 0 و به سمت راست با 1 نشان داده می‌شود.
4. فشرده‌سازی داده‌ها: داده‌ها با جایگزینی هر کاراکتر با کد باینری مربوطه فشرده می‌شوند.


#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍4
🌟 پروژه تشخیص لباس‌های لری، کردی و ترکمن با استفاده از CNN

👗 هدف پروژه:
تشخیص و دسته‌بندی تصاویر لباس‌های محلی از سه قوم لری، کردی و ترکمن با استفاده از CNN.

🧠 تکنولوژی مورد استفاده:
شبکه‌های عصبی پیچشی (Convolutional Neural Networks - CNN) یکی از پیشرفته‌ترین و قدرتمندترین تکنیک‌ها در زمینه پردازش تصویر و بینایی ماشین است. این شبکه‌ها با بهره‌گیری از لایه‌های مختلف می‌توانند ویژگی‌های پیچیده تصاویر را استخراج کرده و به تشخیص دقیق‌تری دست یابند.

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

🔍 مراحل کار:
1. جمع‌آوری داده‌ها: تهیه تصاویر مختلف از لباس‌های محلی هر قوم.
2. پیش‌پردازش داده‌ها: تنظیم و آماده‌سازی تصاویر برای آموزش مدل.
3. آموزش مدل: استفاده از CNN برای یادگیری ویژگی‌های تصاویر و تشخیص لباس‌های هر قوم.
4. ارزیابی و تست: بررسی عملکرد مدل بر روی مجموعه‌ای از تصاویر جدید و ارزیابی دقت آن.


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

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

🌐 لینک گیت‌هاب:
برای مشاهده جزئیات بیشتر و دسترسی به کدهای پروژه، به لینک زیر مراجعه کنید:

📎GitHub


#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5🙏1👨‍💻1
This media is not supported in your browser
VIEW IN TELEGRAM
🌟 شروع یادگیری شبکه‌های عصبی: از قلم و کاغذ تا پیاده‌سازی با Numpy! 🌟

برای شروع یادگیری شبکه‌های عصبی، بهترین راه استفاده از قلم و کاغذ است، نه PyTorch یا TensorFlow.

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

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

👩‍🎓 تجربه‌های واقعی:
بسیاری از دانش‌آموزانی که تاکنون مدلی را از ابتدا بدون استفاده از PyTorch یا TensorFlow کدنویسی نکرده‌اند، اغلب درک کاملی از تمام اجزای شبکه‌های عصبی ندارند.

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