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

👨‍💻Admin👉 @Se_mohamad
Download Telegram
در ساختمان داده، هیپ نوعی ساختار داده درختی است که به عنوان یک درخت دودویی کامل (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
Mathematical Methods in Data Science.pdf
7.7 MB
این کتاب با عنوان "Mathematical Methods in Data Science" نوشته Jingli Ren و **Haiyan Wang**، به بررسی روش‌های ریاضیاتی مورد استفاده در علوم داده می‌پردازد. 📊 این کتاب برای علاقه‌مندان به داده‌کاوی، تحلیل داده‌ها و کاربردهای ریاضیات در علم داده‌ها بسیار مناسب است و ابزارهای ضروری برای درک و اعمال تکنیک‌های پیچیده ریاضی را در اختیار خوانندگان قرار می‌دهد. با مطالعه این کتاب، می‌توانید توانایی‌های خود را در زمینه‌هایی مانند مدل‌سازی، بهینه‌سازی و تحلیل‌های آماری بهبود بخشید. 📚

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
3 Recursive Algorithms_2.pdf
358.4 KB
1. الگوریتم‌های بازگشتی (Recursive Algorithms): این الگوریتم‌ها با تقسیم یک مسئله به نسخه‌های کوچکتر و ساده‌تر از همان مسئله، کار می‌کنند. در نهایت، با رسیدن به یک شرط پایه، مسئله حل می‌شود و نتایج به‌دست‌آمده به‌صورت معکوس ترکیب می‌شوند تا جواب نهایی محاسبه شود. 🌱

2. معادلات بازگشتی (Recurrence Equations): این معادلات برای توصیف زمان اجرای الگوریتم‌های بازگشتی به‌کار می‌روند. معادله بازگشتی نشان می‌دهد که چگونه زمان اجرای یک الگوریتم بازگشتی به زمان اجرای نسخه‌های کوچکتر آن وابسته است. 📐

3. تکنیک تقسیم و غلبه (Divide-and-Conquer Technique): این تکنیک یکی از مشهورترین استراتژی‌های حل مسئله است. در این روش، مسئله به بخش‌های کوچکتر تقسیم می‌شود، هر بخش به‌طور جداگانه حل می‌شود، و سپس نتایج ترکیب می‌شوند تا جواب نهایی به‌دست آید. الگوریتم‌هایی مانند مرج سورت (Merge Sort) و کوئیک سورت (Quick Sort) نمونه‌های خوبی از این تکنیک هستند. ⚔️

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
❤️ یک کاربرد واقعاً مفید از شبکه‌های عصبی

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

در واقع AINU از یک شبکه عصبی فوق‌العاده دقیق برای تجزیه و تحلیل تصاویری که از طریق میکروسکوپی STORM به دست آمده‌اند، استفاده می‌کند که وضوح "نانو" ارائه می‌دهد.

این هوش مصنوعی می‌تواند تغییرات ساختاری در سلول‌ها را به کوچکی ۲۰ نانومتر تشخیص دهد، که ۵۰۰۰ برابر کوچکتر از عرض یک تار موی انسان است.

همچنین توانست ویروس هرپس را تنها یک ساعت پس از عفونت با مشاهده تغییرات در DNA شناسایی کند.

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

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

AI spots cancer and viral infections with nanoscale precision

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
نمونه سوال طراحی الگوریتم.rar
4 MB
نمونه سوالات جامع آزمون طراحی الگوریتم برای آمادگی کامل شما! این سوالات به شما کمک می‌کنند تا با مباحث مختلف آشنا شوید و در امتحان با اطمینان بیشتری حاضر شوید. 📝💻

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
مقاله "All Points Matter" یک روش برای تقسیم‌بندی سه‌بعدی با نظارت ضعیف پیشنهاد می‌دهد که از تنظیم آنتروپی برای بهبود استفاده از داده‌های بدون برچسب بهره می‌گیرد. این کار باعث کاهش عدم قطعیت و تراز بهتر داده‌ها می‌شود و عملکرد مدل را ارتقا می‌دهد. 🚀📊

Github: https://github.com/LiyaoTang/ERDA

📕 Paper: https://arxiv.org/abs/2408.16520v1

🚀 Dataset: https://paperswithcode.com/dataset/cityscapes

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
درخت‌های باینری بر اساس تعداد فرزندان هر گره به چند نوع تقسیم می‌شوند:

1. درخت باینری کامل (Full Binary Tree): در این نوع درخت، هر گره یا دو فرزند دارد یا هیچ فرزندی ندارد. یعنی هر گره یا کاملاً پر است یا اصلاً فرزند ندارد.
🌳

2. درخت باینری انحرافی (Degenerate Binary Tree): این نوع درخت یک زنجیره خطی است، یعنی هر گره دقیقاً یک فرزند دارد. در واقع، این درخت مثل یک لیست پیوندی است.
🌲

3. درخت باینری کج (Skewed Binary Tree): در این نوع درخت، همه گره‌ها به یک طرف (چپ یا راست) متمایل هستند. به دو نوع کج به چپ و کج به راست تقسیم می‌شود.
🌴

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
دنباله فیبوناچی با دو عدد 0 و 1 شروع می‌شود و هر عدد بعدی برابر مجموع دو عدد قبلی است. اگرچه این دنباله به ظاهر ساده است، اما دارای پیچیدگی‌های زیادی است.

1. پیچیدگی محاسباتی 📊
- محاسبه بازگشتی ساده: ناکارآمد و با پیچیدگی زمانی O(2^n) است.
- برنامه‌نویسی پویا: با ذخیره نتایج، کارایی بهبود یافته و پیچیدگی به O(n) کاهش می‌یابد.
- استفاده از ماتریس‌ها: با ضرب ماتریس‌ها می‌توان سریع‌تر و با پیچیدگی O(log n) محاسبه کرد.

2. کاربردها 🌿💻
- طبیعت: در الگوی گل‌ها، مارپیچ‌ها و نسبت‌های طبیعی ظاهر می‌شود.
- علوم کامپیوتر: در الگوریتم‌ها، رمزنگاری و ساختارهای داده مثل "هیپ فیبوناچی" استفاده می‌شود.

3. عدد طلایی
با افزایش تعداد اعداد در دنباله، نسبت بین دو عدد متوالی به عدد طلایی
نزدیک می‌شود که در هنر و معماری نیز بسیار استفاده می‌شود.

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

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
مجموعه داده Hokoff با استفاده از اطلاعات بازی Honor of Kings برای بهبود یادگیری تقویتی آفلاین و یادگیری تقویتی چندعاملی آفلاین ایجاد شده است. این داده‌ها واقعیت و پیچیدگی بیشتری نسبت به مجموعه‌های داده قبلی دارند و شامل فضاهای عملیاتی سلسله‌مراتبی هستند که تصمیم‌گیری‌های پیچیده در بازی‌ها را به‌خوبی شبیه‌سازی می‌کنند. Hokoff همچنین یک الگوریتم پایه جدید ارائه می‌کند تا محققان بتوانند الگوریتم‌های خود را برای سناریوهای واقعی بهینه‌سازی کنند. 🎮🧠

Github: https://github.com/tencent-ailab/hokoff

📕 Paper: https://arxiv.org/abs/2408.10556v1

🚀 Dataset: https://paperswithcode.com/dataset/d4rl

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 1
درس: 📘 ساختمان داده‌ها و الگوریتم‌ها
موضوع: 📊 آشنایی با سیلابس درس و نمونه‌هایی از تحلیل مرتبه زمانی
مدرس: 👨‍🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 2
درس: 📘 ساختمان داده‌ها و الگوریتم‌ها
موضوع: 🔍 بررسی دقیق‌تر مرتبه زمانی، محاسبه بهترین حالت (Best Case)، بدترین حالت (Worst Case)، و حالت متوسط (Average Case) الگوریتم‌ها
مدرس: 👨‍🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 3
درس: 📘 ساختمان داده‌ها و الگوریتم‌ها
موضوع: ⚙️ مفاهیم Ω (اُمگا)، O (اُ)، و Θ (تتا)
مدرس: 👨‍🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 4
درس: 📘 ساختمان داده‌ها و الگوریتم‌ها
موضوع: 🔄 تحلیل مجانبی و روابط بازگشتی
مدرس: 👨‍🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 5
درس: 📘 ساختمان داده‌ها و الگوریتم‌ها
موضوع: 🌳 تحلیل الگوریتم‌های بازگشتی با روش درختی و قضیه اصلی
مدرس: 👨‍🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 6
درس: 📘 ساختمان داده‌ها و الگوریتم‌ها
موضوع: ⚖️ قضیه اصلی و روش‌های تقسیم و غلبه
مدرس: 👨‍🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 7
درس: 📘 ساختمان داده‌ها و الگوریتم‌ها
موضوع: 📉 تحلیل سرشکن (Amortized Analysis)
مدرس: 👨‍🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 8
درس: 📘 ساختمان داده‌ها و الگوریتم‌ها
موضوع: 🛠 داده‌ساختارهای ابتدایی: صف (Queue) و استک (Stack)
مدرس: 👨‍🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف

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