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

👨‍💻Admin👉 @Se_mohamad
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
سیستم هوش مصنوعی ایلان ماسک به نام Grok یک ویدیوی دیپ‌فیک بسیار واقعی تولید کرده است که در آن ایلان ماسک، دونالد ترامپ و دیگران در حال ارتکاب سرقت مسلحانه نشان داده می‌شوند. این کلیپ که برای تفریح ساخته شده، بحث‌های زیادی در مورد اخلاق و تأثیرات آینده محتوای تولید شده توسط هوش مصنوعی به وجود آورده است.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
4
الگوریتم حریصانه: "نقد را بچسب، نسیه را رها کن"

الگوریتم حریصانه (Greedy Algorithm) یک روش حل مسئله است که در آن تصمیم‌گیری‌ها بر اساس انتخاب‌های بهینه در هر مرحله انجام می‌شود 📈، بدون توجه به اینکه این انتخاب‌ها ممکن است در آینده تأثیر منفی داشته باشند 🤔. هدف اصلی الگوریتم حریصانه این است که در هر مرحله، بهترین گزینه را انتخاب کند تا به یک راه‌حل کلی برسد 🛠. این روش شبیه به ضرب‌المثل "نقد را بچسب، نسیه را رها کن" است که نشان می‌دهد بهینه‌سازی‌های محلی در هر مرحله ممکن است در نهایت به بهترین راه‌حل نرسند.

اصول الگوریتم حریصانه:
1. ساختار حریصانه: در هر مرحله، بهترین انتخاب ممکن انجام می‌شود 🥇.
2. گزینه‌های محلی بهینه: هر انتخاب در لحظه‌ای که تصمیم گرفته می‌شود، باید بهینه باشد 🧠.
3. بدون بازنگری: انتخاب‌های انجام‌شده در مراحل قبل، در مراحل بعدی تغییر نمی‌کنند 🚫🔄.

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

کاربردها:
- مسئله‌ی کوله‌پشتی (Knapsack Problem) - نسخه‌ای که اقلام را می‌توان به صورت تکه‌ای برد، با استفاده از الگوریتم حریصانه حل می‌شود 🎒.
- کدگذاری هافمن (Huffman Coding) - برای فشرده‌سازی داده‌ها 📦.
- پیدا کردن درخت پوشای کمینه (Minimum Spanning Tree) - با استفاده از الگوریتم‌های Prim و Kruskal 🌳.

مزایا:
- سادگی: این الگوریتم‌ها اغلب ساده و سرراست هستند 🟢.
- کارایی: برای بسیاری از مسائل، الگوریتم‌های حریصانه بسیار کارا هستند ⚡️.

معایب:
- بهینه نبودن در همه موارد: الگوریتم‌های حریصانه همیشه به بهترین راه‌حل کلی نمی‌رسند 🚧. آن‌ها ممکن است در جستجوی یک راه‌حل بهینه به دام بیفتند 🔍.

به طور خلاصه، الگوریتم‌های حریصانه برای مسائل خاص که دارای ساختار مناسب هستند، بسیار مفید و کارا هستند، اما همیشه تضمین نمی‌کنند که بهترین پاسخ را ارائه دهند 🎯.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👏4👍2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
مقدمه‌سازی درست پارامترها می‌تواند بهبود چشمگیری در سرعت و دقت آموزش شبکه‌های عصبی عمیق ایجاد کند. با استفاده از روش‌های مناسب، این نکات را برای دستیابی به نتایج بهتر به کار بگیرید.
📊🤖💡

https://www.deeplearning.ai/ai-notes/initialization/index.html

#هوش_مصنوعی

📣👨‍💻 @AlgorithmDesign_DataStructuer
یه شبکه عصبی فوق‌العاده منتشر شده که می‌تونه هر ویدیویی رو به حد کمال برسونه! 😍🔥
با EvTexture دیگه نگران ویدیوهای تار و بی‌کیفیت نباشید، چون به راحتی می‌تونید اون‌ها رو دوباره زنده کنید! 🎥
و مهم‌تر از همه، کاملاً رایگانه! 🎉

🔗https://github.com/DachunKai/EvTexture

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍2
آموزش برنامه‌نویسی، ساختارهای داده و الگوریتم‌ها با پایتون
⌛️ مدت دوره: ۶ هفته
👨‍🏫 تعداد جلسات: ۴۵ جلسه

💻📚

🔗 Link to course

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍2🙏1
ربات خانگی NEO 🦾

شما در حال مشاهده یک ربات واقعی هستید — NEO برای انجام تمامی کارهای خانگی طراحی شده است.

قابلیت‌ها:
- کمک در تخلیه خریدهای روزانه 🛒
- شستشوی ظروف 🍽
- پخت و پز و دوباره شستشوی ظروف 🍲

این ربات هر کاری که بخواهید برایتان انجام می‌دهد!

📏 مشخصات فنی:
- قد: ۱.۶۵ متر
- وزن: ۳۰ کیلوگرم
- سرعت راه رفتن: ۴ کیلومتر در ساعت 🚶‍♂️
- سرعت دویدن: ۱۲ کیلومتر در ساعت 🏃‍♂️
- ظرفیت حمل بار: ۲۰ کیلوگرم 📦

تاریخ شروع تولید انبوه و قیمت‌ها هنوز اعلام نشده است.

نکته جالب: صحنه‌هایی از فیلم "I Robot" بلافاصله به ذهن می‌آیند... 🤖🎥

Source

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5
دوره رایگان «مقدمه‌ای بر علم داده» از دانشگاه هاروارد! 🌟

این دوره برای همه آزاد است و شامل موارد زیر می‌شود:

1. 📚 جزوه‌های درسی
2. 💻 کدهای R و نوت‌بوک‌های پایتون
3. 🧪 مطالب آزمایشگاهی
4. 📈 بخش‌های پیشرفته

🔗 لینک یادگیری: [https://harvard-iacs.github.io/2019-CS109A/pages/syllabus.html]

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
درخت سیاه و قرمز 🌳❤️🖤 یک نوع درخت دودویی جستجو (Binary Search Tree) است که به‌طور خاص برای حفظ تعادل درخت طراحی شده است. این تعادل به بهینه‌سازی عملیات‌هایی مثل جستجو، درج، و حذف کمک می‌کند و زمان انجام این عملیات‌ها را به O(log n) می‌رساند.

ویژگی‌های درخت سیاه و قرمز:
1. گره‌ها یا سیاه هستند یا قرمز 🟥⬛️: هر گره در این درخت یکی از این دو رنگ را دارد.

2. ریشه همیشه سیاه است 🖤: گره ریشه (Root) همیشه به رنگ سیاه است.

3. هر گره قرمز باید دو فرزند سیاه داشته باشد 👶⬛️👶: دو گره قرمز نباید پشت سر هم در یک مسیر قرار بگیرند.

4. تعداد گره‌های سیاه در هر مسیر باید برابر باشد ➡️⬛️⬛️⬛️: این ویژگی به تعادل درخت کمک می‌کند.

عملیات‌های اصلی در درخت سیاه و قرمز:

1. درج (Insertion) : گره جدید ابتدا مانند یک درخت دودویی معمولی درج می‌شود، اما بعداً ممکن است نیاز به چرخش‌ها (Rotations) و تغییر رنگ‌ها 🌀🎨 باشد تا قوانین درخت حفظ شوند.

2. حذف (Deletion) : بعد از حذف یک گره، ممکن است نیاز به چرخش‌ها و تغییر رنگ‌ها باشد تا درخت همچنان متعادل 🏗 باقی بماند.

3. چرخش‌ها (Rotations) 🔄: چرخش‌های چپ و راست برای بازگرداندن تعادل درخت در صورت نقض قوانین استفاده می‌شوند.

مزایای درخت سیاه و قرمز:
- حفظ تعادل ⚖️: این درخت تضمین می‌کند که همواره تقریباً متوازن باشد، بنابراین ارتفاع درخت O(log n) باقی می‌ماند.
- کارایی 🚀: به دلیل تعادل درخت، عملیات‌هایی مانند جستجو، درج، و حذف با کارایی بالا انجام می‌شوند.

درخت سیاه و قرمز در بسیاری از برنامه‌های کامپیوتری کاربرد دارد، به‌ویژه در ساختارهای داده‌ای مثل جداول هش، نقشه‌ها (Maps) و مجموعه‌ها (Sets) که نیاز به دسترسی سریع دارند. 📊🔍

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5👌1
🎉 ربات تلگرام ChatGPT: GPT-4o 🎉


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

- سرعت بالا ⚡️
- بدون محدودیت روزانه

🗣 پشتیبانی از چت گروهی
با دستور /help_group_chat می‌توانید راهنمای کامل استفاده در گروه‌ها را دریافت کنید.

🎤 شناسایی پیام‌های صوتی
دیگر نگران تایپ پیام‌های طولانی نباشید! پیام صوتی خود را ارسال کنید و متن آن را دریافت کنید.

💻 برجسته‌سازی کد
به‌راحتی کدهای خود را با کمک هوش مصنوعی نوشته و مدیریت کنید.


💡 ۱۵ حالت چت ویژه:

1. 👩🏼‍🎓 دستیار شخصی
2. 👩🏼‍💻 دستیار کدنویسی
3. 👩‍🎨 هنرمند خلاق
4. 🧠 روانشناس
5. 🚀 ایلان ماسک
6. ... و بسیاری دیگر!

https://t.me/happysamsonbot

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍3
پیکسات-سیگما (Pixart-Sigma)🎨، اولین و پیشرفته‌ترین training framework 🚀 مبتنی بر transformer است که برای تولید تصاویر با کیفیت بالا 🌟 طراحی شده. این چارچوب نوآورانه 🛠، استانداردهای جدیدی رو در دنیای image generation 📸 تعیین می‌کنه و از تکنولوژی‌های پیشرفته برای خلق تصاویر دقیق و واقعی 🎨 بهره می‌بره.

Github: https://github.com/PixArt-alpha/PixArt-sigma

🔥Demo: https://huggingface.co/spaces/PixArt-alpha/PixArt-Sigma

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍4
برای افرادی که می‌خواهند مهارت‌های خود را در تحلیل پیچیدگی زمانی و درک Big O Notation تقویت کنند، وب‌سایت 101 Computing یک منبع عالی است! 🌟 در این سایت، شما می‌توانید از کوییزهای جذاب و مفیدی بهره‌مند شوید که به شما کمک می‌کند تا با مفاهیم پیچیدگی زمانی به صورت عملی آشنا شوید. 📚🧩

site:https://www.101computing.net/big-o-notation-quiz/

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👌6
شار (جریان) بیشینه یا ماکزیمم فلو (💧Maximum Flow) یکی از مسائل کلاسیک در زمینه نظریه گراف‌ها (📊) و به‌ویژه در بهینه‌سازی شبکه‌ها (🔗) است. این مسئله در بسیاری از کاربردها، مانند شبکه‌های حمل‌ونقل (🚗🛤)، ارتباطات (📡📞)، تخصیص منابع (💼), و غیره، مورد استفاده قرار می‌گیرد.

تعریف مسئله ماکزیمم فلو:
فرض کنید یک شبکه به صورت یک گراف جهت‌دار (🔄) داریم که از مجموعه‌ای از رأس‌ها (🔹نودها) و یال‌ها (↔️) تشکیل شده است. این گراف دارای دو رأس خاص به نام‌های مبدأ (🔵source) و مقصد (🔴sink) است. هر یال در این گراف دارای یک ظرفیت است که نشان‌دهنده حداکثر جریان (⬆️فلو) قابل عبور از آن یال می‌باشد.

هدف از مسئله ماکزیمم فلو این است که حداکثر مقدار جریانی که می‌تواند از مبدأ به مقصد در این شبکه منتقل شود را محاسبه کنیم، به طوری که جریان در هیچ یک از یال‌ها از ظرفیت آن یال تجاوز نکند ().

قوانین جریان:
1. محدودیت ظرفیت (🚫): جریان عبوری از هر یال نباید از ظرفیت آن یال بیشتر شود.
2. محافظه جریان (🔄): در هر رأس، مجموع جریان ورودی برابر با مجموع جریان خروجی است، مگر در رأس‌های مبدأ و مقصد.

روش‌های حل:
چندین الگوریتم برای حل مسئله ماکزیمم فلو وجود دارد که از جمله معروف‌ترین آن‌ها می‌توان به موارد زیر اشاره کرد:

1. الگوریتم فورد-فولکرسون (📈Ford-Fulkerson):
این الگوریتم یک روش افزایشی (📊incremental) است که به صورت تکراری، مسیرهای افزایشی (📉augmenting paths) در گراف را پیدا می‌کند و مقدار جریان را افزایش می‌دهد تا جایی که دیگر مسیر افزایشی وجود نداشته باشد.

2. الگوریتم ادموندز-کارپ (📊Edmonds-Karp):
این الگوریتم نسخه‌ای از الگوریتم فورد-فولکرسون است که از جستجوی اول سطح (🔍BFS) برای پیدا کردن مسیرهای افزایشی استفاده می‌کند. این روش تضمین می‌کند که مسئله در زمان چندجمله‌ای (⌛️polynomial time) حل شود.

3. الگوریتم پویش سطحی داینامیک (⚙️Dinic’s Algorithm):
یک الگوریتم پیشرفته‌تر است که بر اساس مفهوم بلوکه کردن جریان‌ها (🚧blocking flows) عمل می‌کند و معمولاً سریع‌تر از الگوریتم ادموندز-کارپ است.

کاربردها:
مسئله ماکزیمم فلو کاربردهای فراوانی دارد، از جمله:
- شبکه‌های حمل‌ونقل (🚚🚆): محاسبه حداکثر ظرفیت جابجایی در یک شبکه جاده‌ای یا ریلی.
- شبکه‌های ارتباطات (🌐): تعیین ظرفیت انتقال داده‌ها در شبکه‌های کامپیوتری یا مخابراتی.
- مدیریت منابع آب (💧): محاسبه جریان حداکثری که می‌تواند از یک سیستم رودخانه‌ای عبور کند بدون اینکه باعث سیلاب شود (🌊).

به طور کلی، ماکزیمم فلو یک ابزار بسیار قدرتمند (🔧) در تحلیل و بهینه‌سازی شبکه‌های مختلف است و در حل مسائل پیچیده به کار می‌رود.

برای درک بهتر میتوانید با استفاده از لینک زیر با مثال به درک بهتری از این الگوریتم برسید:
https://isabek.github.io/

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
👍5
در ساختمان داده، هیپ نوعی ساختار داده درختی است که به عنوان یک درخت دودویی کامل (Complete Binary Tree) سازماندهی می‌شود. در این درخت، هر سطح (به‌جز سطح آخر) کاملاً پر شده و گره‌ها به سمت چپ تراز شده‌اند. هیپ به دو نوع اصلی تقسیم می‌شود:

1. Max-Heap (ماکس-هیپ)⬆️
در Max-Heap، مقدار هر گره بزرگتر یا مساوی مقدار فرزندانش است. یعنی، بزرگترین مقدار همیشه در ریشه درخت قرار می‌گیرد. این نوع هیپ برای استخراج حداکثر (extract-max) بسیار کارآمد است.

2. Min-Heap (مین-هیپ)
⬇️
در Min-Heap، مقدار هر گره کوچکتر یا مساوی مقدار فرزندانش است. یعنی، کوچکترین مقدار در ریشه قرار دارد. این نوع هیپ برای استخراج حداقل (extract-min) مناسب است.

ویژگی‌های کلیدی هیپ 🌳
- درخت دودویی کامل: هیپ همیشه یک درخت دودویی کامل است، یعنی هر سطح (به‌جز آخرین سطح) به‌طور کامل پر شده است.
- خاصیت هیپ: در Max-Heap مقدار هر گره بزرگتر یا مساوی فرزندانش و در Min-Heap مقدار هر گره کوچکتر یا مساوی فرزندانش است.


عملیات‌های اصلی هیپ 🔄
1. افزودن عنصر (Insert) : افزودن یک عنصر جدید به هیپ با قرار دادن آن در اولین جای خالی و سپس "heapify" از پایین به بالا.
2. استخراج حداکثر/حداقل (Extract Max/Min) : حذف عنصر ریشه و جایگزینی آن با آخرین عنصر درخت و سپس "heapify" از بالا به پایین.
3. ایجاد هیپ (Build Heap) 🛠: ساختن هیپ از یک آرایه با استفاده از روش "heapify" برای هر زیر درخت.

کاربردهای هیپ 📚
- الگوریتم‌های مرتب‌سازی: مانند Heap Sort که از خاصیت هیپ برای مرتب‌سازی استفاده می‌کند.
- ساختارهای داده اولویت‌دار: مانند Priority Queue که از هیپ برای مدیریت صف با اولویت استفاده می‌کند.
- مدیریت منابع سیستم: برای تخصیص حافظه و مدیریت فرآیندها در سیستم‌های عامل.

مزایای هیپ 🎯
- پیچیدگی زمانی کارآمد : عملیات‌های اصلی مانند افزودن، استخراج حداکثر/حداقل، و ساختن هیپ به ترتیب دارای پیچیدگی زمانی( O(log n و O(n) هستند.
- ساختار داده ساده: پیاده‌سازی و استفاده از هیپ به دلیل ساختار ساده آن، نسبتاً آسان است.

هیپ یکی از ساختارهای داده پرکاربرد است که در الگوریتم‌ها و سیستم‌های کامپیوتری به‌طور گسترده‌ای استفاده می‌شود.

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