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

👨‍💻Admin👉 @Se_mohamad
Download Telegram
اسلاید_ساختمان_داده_و_الگوریتم_دانشگاه_صنعتی_شریف.rar
42.8 MB
🌟 اسلایدهای درس ساختمان داده و طراحی الگوریتم دانشگاه صنعتی شریف 🌟

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
Mathematics of machine learning

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

https://ocw.mit.edu/courses/18-657-mathematics-of-machine-learning-fall-2015/

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
240_64135168392798.pdf
113.6 KB
معرفی بورس کشور چین-دانشگاه هاربین
This media is not supported in your browser
VIEW IN TELEGRAM
سرویس مخفی آمریکا پس از پیروزی دونالد ترامپ در انتخابات، برای افزایش امنیت در املاک او از سگ‌های رباتیک استفاده کرده است.

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
درخت جستجوی بهینه (Optimal Binary Search Tree) یک نوع خاص از درخت دودویی جستجو (BST) است که با هدف بهینه‌سازی سرعت جستجو طراحی شده است. 🌲 در این درخت، هدف این است که میانگین زمان جستجو برای دسترسی به گره‌های مختلف به حداقل برسد. این نوع درخت برای مجموعه‌ای از کلیدهایی که هر کدام احتمال جستجوی مشخصی دارند، ساخته می‌شود. 📈

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

کاربرد درخت جستجوی بهینه 💼
این نوع درخت معمولاً در مواردی استفاده می‌شود که نیاز به تعداد زیادی عملیات جستجو باشد و بخواهیم بهینه‌ترین ساختار داده را برای کاهش زمان جستجو داشته باشیم. نمونه‌هایی از این کاربردها:

- کامپایلرها برای تحلیل جملات برنامه 🖥
- سیستم‌های پایگاه داده برای سرعت بخشیدن به عملیات جستجو در داده‌های پرتکرار 🗃
- موتورهای جستجو و الگوریتم‌های جستجوی سریع 🔍

مراحل ساخت درخت جستجوی بهینه 🔄
برای ساخت درخت جستجوی بهینه، الگوریتم‌های برنامه‌نویسی پویا (Dynamic Programming) به کار می‌روند. مراحل به شرح زیر هستند:

1. تعریف احتمالات دسترسی: هر کلید (K_i) از کلیدهای مجموعه یک احتمال دسترسی (P(i)) دارد که بیانگر احتمال جستجوی آن کلید است. 📊

2. محاسبه هزینه جستجو: هزینه جستجو معمولاً به صورت مجموع حاصل ضرب عمق هر گره در احتمال دسترسی آن تعریف می‌شود. هدف این است که این هزینه کمینه شود. 🔽

3. ساخت جدول هزینه‌ها: از طریق **برنامه‌نویسی پویا**، یک جدول هزینه ساخته می‌شود که نشان‌دهنده کمترین هزینه جستجو برای زیرمجموعه‌های مختلف کلیدها است. 📅

4. ساخت درخت: با استفاده از جدول هزینه‌ها، درخت بهینه با قرار دادن کلیدها در سطوح مناسب ساخته می‌شود. 🌳

پیاده‌سازی الگوریتم 🔧
درخت جستجوی بهینه معمولاً با استفاده از برنامه‌نویسی پویا پیاده‌سازی می‌شود. این الگوریتم به صورت بازگشتی یا از پایین به بالا عمل می‌کند تا با در نظر گرفتن تمامی حالت‌های ممکن برای چیدمان کلیدها، بهترین چیدمان را پیدا کند. 🔍

پیچیدگی زمانی ⏱️
پیچیدگی زمانی این الگوریتم در حالت کلی (O(n^3)) است، چرا که برای هر زیرمسئله به مقایسه تمامی ترکیب‌های ممکن برای کلیدها نیاز دارد. با این حال، می‌توان آن را بهینه‌تر کرد، اما همچنان زمان‌بر است.

مزایا و معایب 🔄
- مزایا:
- بهینه‌سازی شدهبرای شرایطی که احتمال دسترسی به کلیدها متفاوت است.
- زمان جستجوی میانگین کمتر از درخت جستجوی دودویی ساده در شرایطی که احتمال دسترسی مشخص است. 📉

- معایب:
- ساخت درخت پیچیده و زمان‌بر است. 🚧
- در صورت تغییر در احتمالات دسترسی کلیدها، نیاز به بازسازی درخت وجود دارد. 🔄

مثال 📘
فرض کنید مجموعه کلیدهای ما ([K1, K2, K3]) باشد و احتمال دسترسی به آن‌ها به ترتیب (P1=0.2)، (P2=0.5)، و (P3=0.3) باشد. برای یافتن بهینه‌ترین ساختار، کلید (K2) که احتمال دسترسی بیشتری دارد، باید در سطح بالاتر (نزدیک به ریشه) قرار گیرد.

این فرآیند کمک می‌کند که جستجوها با میانگین زمان کمتری انجام شوند. 📈

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
سلام دوستان عزیز
خوشحال می‌شم که همدیگر رو در گیت‌هاب و لینکدین دنبال کنیم و باهم در ارتباط باشیم. منتظر تعاملات خوب با شما هستم! 🌟

🔗 لینک گیت‌هاب:
https://github.com/MohammadHossini

🔗 لینک لینکدین:
https://www.linkedin.com/in/mohammad-hosseini-3b823724b/
📚 Reinforcement Learning, Stanford
دو هفته پیش، دانشگاه استنفورد دوره CS234 - 2024 را منتشر کرد.

پروفسور Emma Brunskill و تیم‌شون آموزش می‌دهند:
- Policy search
- Offline RL
- Multi-Agent Game playing
- and much more

https://www.youtube.com/playlist?list=PLoROMvodv4rN4wG6Nk6sNpTEbuOSosZdX

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
🔍 دنبال بهترین‌های یادگیری ماشین با پایتون هستید؟
این گیت‌هاب را بررسی کنید که بیش از ۹۲۰ کتابخانه ML را در دسته‌بندی‌های مختلف مانند NLP، بصری‌سازی داده، OCR، AutoML و غیره رتبه‌بندی کرده! این مخزن، با منابع متن‌باز ارزشمند، به‌صورت هفتگی به‌روزرسانی می‌شود. توجه داشته باشید که هر پروژه بر اساس معیارهای کیفی رتبه‌بندی شده است، بنابراین در پیدا کردن ابزارهای مطمئن، زمان زیادی صرفه‌جویی می‌کنید.

https://github.com/ml-tooling/best-of-ml-python

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
🌟 معرفی مقاله: 🌟
A Comprehensive Survey of Small Language Models in the Era of Large Language Models: Techniques, Enhancements, Applications, Collaboration with LLMs, and Trustworthiness

این مقاله، یک بررسی جامع از مدل‌های زبانی کوچک (SLMs) ارائه می‌دهد و به تکنیک‌ها، بهبودها، کاربردها، و همکاری آن‌ها با مدل‌های زبانی بزرگ (LLMs) می‌پردازد. همچنین، به موضوع مهم قابلیت اطمینان این مدل‌ها اشاره دارد و نشان می‌دهد که چگونه می‌توان از مدل‌های کوچک برای کاربردهای خاص و بهینه‌تر استفاده کرد. اگر به مدل‌های زبانی و پیشرفت‌های آن‌ها علاقه‌مندید، این مقاله اطلاعات ارزشمندی را در اختیارتان می‌گذارد. 📘

📄 لینک مقاله:
https://arxiv.org/abs/2411.03350

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
در مقاله‌ی اخیر ما با عنوان "Reverse Stable Diffusion: What prompt was used to generate this image" که برای انتشار در Computer Vision and Image Understanding پذیرفته شده، به بررسی وظیفه‌ی پیش‌بینی prompt embedding بر اساس یک تصویر تولید شده توسط یک مدل دیفیوژن مولد می‌پردازیم. شاید جالب‌ترین کشف این مطالعه این است که آموزش یک مدل دیفیوژن بر روی وظیفه‌ی تولید prompt می‌تواند باعث شود مدل تصاویری تولید کند که همخوانی بسیار بیشتری با input prompts داشته باشند؛ به‌ویژه زمانی که مدل معکوس به‌طور مستقیم برای text-to-image generation استفاده شود.

https://arxiv.org/abs/2308.01472

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
جزوه ساختمان داده (نکته).pdf
82.2 MB
📚 جزوه خلاصه و نکات مهم ساختمان داده 📚

این جزوه، مجموعه‌ای از نکات کلیدی و خلاصه‌های کاربردی درس ساختمان داده‌ها رو در بر داره که به‌صورت تخصصی و ساده تنظیم شده. 👨‍💻 این مجموعه مناسب دوستانیه که دارن برای آزمون‌های استخدامی و کنکور آماده میشن. 🎓 با مطالعه این جزوه، می‌تونید به درک بهتری از ساختارهای داده و الگوریتم‌های مرتبط برسید و زمان مطالعاتی خودتون رو مدیریت کنید.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
🌐 وبسایتی فوق‌العاده برای تجسم یادگیری ماشین

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

https://mlu-explain.github.io/

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
LLM Agents.pdf
15 MB
نماینده‌های زبانی (LLM Agents)

این ارائه در مورد Language (LLM) Agents به موضوعات زیر می‌پردازد:

- تعریف Language Agents
- تکامل AI Agents
- قدرت Language در Agents
- مسیرهای جذاب آینده مانند Planning، Synthetic Data، Multimodal Perception، Continual Learning، Safety و موارد دیگر

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
الگوریتم Minimum Spanning Tree (MST)، یا درخت پوشای کمینه، یکی از الگوریتم‌های مهم در گراف‌هاست. این الگوریتم برای پیدا کردن زیرگرافی از یک گراف وزن‌دار استفاده می‌شود که تمامی رأس‌ها را شامل شود و مجموع وزن‌های یال‌های آن کمترین مقدار ممکن باشد. این زیرگراف که به عنوان درخت پوشای کمینه شناخته می‌شود، تمامی رأس‌ها را بدون تشکیل حلقه به هم متصل می‌کند. 🌳

مثال کاربردی
تصور کنید که می‌خواهیم شبکه‌ی برق را در یک شهر طراحی کنیم. هدف این است که تمام ایستگاه‌ها به هم متصل شوند، اما هزینه‌ها نیز کمینه باشند. الگوریتم MST به ما کمک می‌کند با کمترین هزینه، ارتباط بین تمام ایستگاه‌ها را برقرار کنیم. ⚡️

الگوریتم‌های معروف برای MST
دو الگوریتم رایج برای حل مسئله‌ی درخت پوشای کمینه، الگوریتم پریم (Prim)
و کریسکال (Kruskal) هستند. هرکدام از این الگوریتم‌ها از روش متفاوتی برای پیدا کردن درخت پوشای کمینه استفاده می‌کنند. 🔍



1. الگوریتم Prim
الگوریتم پریم از یک رأس شروع می‌کند و یال‌های با کمترین وزن را به درخت اضافه می‌کند، به شرطی که ایجاد چرخه نکند. این فرایند تا زمانی که تمام رأس‌ها به درخت اضافه شوند، ادامه می‌یابد. ⛓️
مراحل الگوریتم پریم:
1. انتخاب یک رأس به عنوان نقطه شروع.
2. اضافه کردن یال‌های با کمترین وزن که رأس‌های جدید را به درخت متصل کنند.
3. تکرار این کار تا تمام رأس‌ها به درخت اضافه شوند.
2. الگوریتم Kruskal
الگوریتم کریسکال با مرتب‌سازی تمام یال‌ها از کمترین وزن به بیشترین وزن شروع می‌کند و یال‌ها را یکی یکی به درخت اضافه می‌کند. در این الگوریتم، اطمینان حاصل می‌شود که اضافه کردن یال جدید منجر به ایجاد چرخه نشود. 🔄
مراحل الگوریتم کریسکال:
1. مرتب‌سازی یال‌ها از کمترین به بیشترین وزن.
2. اضافه کردن یال‌ها به درخت، در صورتی که چرخه ایجاد نشود.
3. تکرار تا زمانی که درخت شامل تمام رأس‌ها شود.

مقایسه Prim و Kruskal
- پریم برای گراف‌های متراکم مناسب‌تر است، زیرا از یال‌های نزدیک رأس‌ها استفاده می‌کند.
- کریسکال برای گراف‌های پراکنده مناسب‌تر است، زیرا با یال‌های سبک شروع می‌کند. 🎯

پیچیدگی زمانی
پیچیدگی زمانی برای هر دو الگوریتم:
- الگوریتم Prim: O(E log V)
- الگوریتم Kruskal:O(E log E)

🔍 توضیح: در اینجا \(E\) تعداد یال‌ها و \(V\) تعداد رأس‌ها هستند. این پیچیدگی نشان می‌دهد که هر دو الگوریتم برای گراف‌های بزرگ بهینه عمل می‌کنند.

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

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
دوره رایگان Harvard CS50 – دوره علوم کامپیوتر (نسخه 2023)

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

- Lecture 0 - Scratch
- Lecture 1 - C
- Lecture 2 - Arrays
- Lecture 3 - Algorithms
- Lecture 4 - Memory
- Lecture 5 - Data Structures
- Lecture 6 - Python
- Lecture 7 - SQL
- Lecture 8 - HTML, CSS, JavaScript
- Lecture 9 - Flask
- Lecture 10 - Emoji
- Cybersecurity (امنیت سایبری)

https://www.freecodecamp.org/news/harvard-university-cs50-computer-science-course-2023/

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
برای استفاده راحت‌تر از ChatGPT، شما می‌توانید آن را مستقیماً روی دسکتاپ خود نصب کنید. این کار به شما این امکان را می‌دهد که بدون نیاز به مرورگر، به‌راحتی به ChatGPT دسترسی داشته باشید و از امکانات آن بهره‌مند شوید.

Link: ChatGPT on your desktop

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
Probability Theory.pdf
5.1 MB
جزوه‌های درسی استنفورد درباره "نظریه احتمالات" (سطح دکتری)

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
۱۰ کتاب برتر برای یادگیری ماشین

اگر به دنبال منابعی عالی برای شروع یا پیشرفت در یادگیری ماشین هستید، این لیست شامل ۱۰ کتاب برتر در این زمینه می‌تواند به شما کمک کند:

1️⃣ Machine Learning نوشته‌ی *Tom M. Mitchell*
این کتاب یکی از پایه‌ای‌ترین و معتبرترین منابع برای یادگیری اصول یادگیری ماشین است و مباحث را به صورت جامع و قابل درک ارائه می‌دهد.

2️⃣ Pattern Recognition and Machine Learning نوشته‌ی *Christopher M. Bishop*
یک منبع پیشرفته که به شناسایی الگوها و مبانی یادگیری ماشین می‌پردازد، مناسب برای علاقه‌مندان به تئوری‌های عمیق‌تر.

3️⃣ The Hundred-Page Machine Learning Book نوشته‌ی *Andriy Burkov*
یک کتاب جمع‌وجور و کاربردی که مفاهیم اصلی یادگیری ماشین را تنها در ۱۰۰ صفحه توضیح می‌دهد.

4️⃣ Machine Learning For Absolute Beginners نوشته‌ی *Oliver Theobald*
این کتاب، یادگیری ماشین را برای مبتدیان از صفر و با زبانی ساده توضیح می‌دهد و برای شروعی آسان بسیار مفید است.

5️⃣ Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow نوشته‌ی *Geron Aurelien*
یکی از محبوب‌ترین منابع برای یادگیری عملی یادگیری ماشین با استفاده از کتابخانه‌های مطرح مانند Scikit-Learn، Keras و TensorFlow.

6️⃣ Fundamentals of Machine Learning for Predictive Data Analytics نوشته‌ی *John D. Kelleher, Brian Mac Namee, و Aoife D’Arcy*
این کتاب تمرکز خاصی بر تجزیه‌وتحلیل داده‌ها و پیش‌بینی دارد و به شما کمک می‌کند اصول پایه‌ای این حوزه را بیاموزید.

7️⃣ Machine Learning for Humans نوشته‌ی *Vishal Maini و Samer Sabri*
یک منبع رایگان و جذاب که مفاهیم یادگیری ماشین را به زبان ساده و داستانی توضیح می‌دهد.

8️⃣ Introduction to Machine Learning with Python: A Guide for Data Scientists نوشته‌ی *Andreas Müller*
این کتاب، راهنمایی جامع برای استفاده از زبان پایتون در پروژه‌های یادگیری ماشین است.

9️⃣ Advanced Machine Learning with Python نوشته‌ی *John Hearty*
برای کسانی که می‌خواهند دانش خود را در یادگیری ماشین و پایتون به سطح پیشرفته‌تری برسانند، این کتاب انتخاب مناسبی است.

🔟 Machine Learning With TensorFlow نوشته‌ی *Nishant Shukla*
این کتاب به آموزش یادگیری ماشین با استفاده از فریم‌ورک قدرتمند TensorFlow می‌پردازد و برای علاقه‌مندان به کار با شبکه‌های عصبی بسیار مفید است.

هر یک از این کتاب‌ها می‌تواند شما را در مسیر یادگیری ماشین به خوبی هدایت کند، بسته به اینکه تازه‌کار هستید یا به دنبال گسترش دانش پیشرفته خود هستید! 📚

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
💡 خداحافظ Adam، سلام ADOPT!
به نظر می‌رسه وقتش رسیده که بهینه‌ساز (Optimizer) مدل‌های Deep Learning و LLM‌ها رو ارتقا بدیم!
بهینه ساز ADOPT به‌عنوان جایگزینی برای Adam معرفی شده و تونسته یکی از مشکلات اساسی Adam، یعنی عدم تضمین هم‌گرایی (Convergence) در آپدیت وزن‌ها رو حل کنه.

🔬 این برتری فقط یک ادعای تئوری نیست؛ بلکه در عمل هم در اکثر مسائل، از جمله pretraining مدل GPT-2، عملکرد بهتری داشته است.

💡 ایده اصلی و راهکار ADOPT برای تضمین هم‌گرایی:

1️⃣ حذف گرادیان کنونی از تخمین momentum دوم
2️⃣ نرمال‌سازی گرادیان پیش از آپدیت momentum

به کمک این بهینه‌ساز، فرآیند یادگیری مدل‌ها نه‌تنها پایدارتر بلکه کارآمدتر شده است. 🚀


Paper : https://arxiv.org/abs/2411.02853
code : https://github.com/iShohei220/adopt