Media is too big
VIEW IN TELEGRAM
Session 25
درس: 📘 ساختمان دادهها و الگوریتمها
موضوع:🛤 کوتاهترین مسیر در گراف
مدرس: 👨🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
درس: 📘 ساختمان دادهها و الگوریتمها
موضوع:🛤 کوتاهترین مسیر در گراف
مدرس: 👨🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 26
درس: 📘 ساختمان دادهها و الگوریتمها
موضوع:🌳 درخت پوشای کمینه
مدرس: 👨🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
درس: 📘 ساختمان دادهها و الگوریتمها
موضوع:🌳 درخت پوشای کمینه
مدرس: 👨🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 27
درس: 📘 ساختمان دادهها و الگوریتمها
موضوع:🌳 درخت پوشای کمینه - الگوریتم کراسکال
مدرس: 👨🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
درس: 📘 ساختمان دادهها و الگوریتمها
موضوع:🌳 درخت پوشای کمینه - الگوریتم کراسکال
مدرس: 👨🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
Media is too big
VIEW IN TELEGRAM
Session 28
درس: 📘 ساختمان دادهها و الگوریتمها
موضوع:🔗 مجموعههای مجزا
مدرس: 👨🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
درس: 📘 ساختمان دادهها و الگوریتمها
موضوع:🔗 مجموعههای مجزا
مدرس: 👨🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
اسلاید_ساختمان_داده_و_الگوریتم_دانشگاه_صنعتی_شریف.rar
42.8 MB
📚 اسلایدهای تدریسشده
درس: ساختمان دادهها و الگوریتمها
مدرس: 👨🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
درس: ساختمان دادهها و الگوریتمها
مدرس: 👨🏫 دکتر مسعود صدیقین
دانشگاه: 🏛 صنعتی شریف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
UniMERNet: A Universal Network for Real-World Mathematical Expression Recognition
🖥 Github: https://github.com/opendatalab/unimernet
📕 Paper: https://arxiv.org/pdf/2409.03643v1
🚀 Dataset: https://opendatalab.com/OpenDataLab/UniMER-Dataset
🤗 HF: https://huggingface.co/datasets/wanderkid/UniMER_Dataset
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
🖥 Github: https://github.com/opendatalab/unimernet
📕 Paper: https://arxiv.org/pdf/2409.03643v1
🚀 Dataset: https://opendatalab.com/OpenDataLab/UniMER-Dataset
🤗 HF: https://huggingface.co/datasets/wanderkid/UniMER_Dataset
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
the-growth-of-functions.pdf
522.2 KB
جزوهها و مثالهای کاربردی از مبحث رشد توابع در درس ساختمان داده که یکی از موضوعات مهم محسوب میشود.
📘📈
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
📘📈
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
یادگیری ماشین (Machine Learning) شاخهای از هوش مصنوعی 🤖 است که به سیستمها این قابلیت را میدهد تا بدون نیاز به برنامهنویسی دقیق، از تجربهها یاد بگیرند و با گذشت زمان عملکردشان را بهبود دهند 📈. به جای استفاده از قوانین ثابت، مدلهای یادگیری ماشین با استفاده از دادهها الگوها را شناسایی میکنند و بر اساس آن تصمیمگیری میکنند.
سه نوع اصلی یادگیری ماشین عبارتند از:
1. یادگیری نظارتشده (Supervised Learning): در این روش، مدل با استفاده از دادههای ورودی و خروجی آموزش میبیند 📝 و هدف آن یادگیری رابطه بین آنهاست تا بتواند خروجیهای جدید را پیشبینی کند. مثال: تشخیص ایمیلهای اسپم ✉️.
2. یادگیری بدون نظارت (Unsupervised Learning): در این حالت، مدل تنها با دادههای ورودی کار میکند و سعی میکند ساختارهای پنهان یا گروههای مشابه را پیدا کند 🔍. مثال: خوشهبندی مشتریان بر اساس رفتار خرید 🛒.
3. یادگیری تقویتی (Reinforcement Learning): مدل با تعامل با محیط خود و دریافت پاداشها و تنبیهها یاد میگیرد تا تصمیمات بهتری بگیرد 🏆. مثال: آموزش رباتها برای حرکت در یک محیط 🚀.
یادگیری ماشین در حوزههای مختلف مانند تشخیص تصویر 📸، پردازش زبان طبیعی 🗣، و پیشبینیها و توصیهها (مانند پیشنهاد فیلم یا محصولات 🎥🛍) کاربرد دارد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
سه نوع اصلی یادگیری ماشین عبارتند از:
1. یادگیری نظارتشده (Supervised Learning): در این روش، مدل با استفاده از دادههای ورودی و خروجی آموزش میبیند 📝 و هدف آن یادگیری رابطه بین آنهاست تا بتواند خروجیهای جدید را پیشبینی کند. مثال: تشخیص ایمیلهای اسپم ✉️.
2. یادگیری بدون نظارت (Unsupervised Learning): در این حالت، مدل تنها با دادههای ورودی کار میکند و سعی میکند ساختارهای پنهان یا گروههای مشابه را پیدا کند 🔍. مثال: خوشهبندی مشتریان بر اساس رفتار خرید 🛒.
3. یادگیری تقویتی (Reinforcement Learning): مدل با تعامل با محیط خود و دریافت پاداشها و تنبیهها یاد میگیرد تا تصمیمات بهتری بگیرد 🏆. مثال: آموزش رباتها برای حرکت در یک محیط 🚀.
یادگیری ماشین در حوزههای مختلف مانند تشخیص تصویر 📸، پردازش زبان طبیعی 🗣، و پیشبینیها و توصیهها (مانند پیشنهاد فیلم یا محصولات 🎥🛍) کاربرد دارد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
صف اولویتدار (Priority Queue) در دنیای برنامهنویسی به ما کمک میکند تا کارها را بر اساس اهمیتشان، نه صرفاً زمان ورودشان، مدیریت کنیم. این دادهساختار کاربردهای زیادی دارد، مثل:
🛠 زمانبندی پردازشها: سیستمعاملها از صف اولویتدار برای اولویتدهی به وظایف مختلف استفاده میکنند تا مهمترین کارها سریعتر انجام شوند.
🚗 الگوریتمهای مسیریابی: در مسیریابی، صف اولویتدار کمک میکند تا مسیرهایی با کمترین هزینه یا کوتاهترین زمان شناسایی شوند.
📶 مدیریت منابع: در تخصیص منابعی مثل پهنای باند یا حافظه، صف اولویتدار تضمین میکند که منابع ابتدا به مهمترین درخواستها اختصاص داده شود.
این صف به نوعی شبیه یک سیستم اورژانس است؛ همیشه به مهمترین موضوعات اول رسیدگی میشود! 😊
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
🛠 زمانبندی پردازشها: سیستمعاملها از صف اولویتدار برای اولویتدهی به وظایف مختلف استفاده میکنند تا مهمترین کارها سریعتر انجام شوند.
🚗 الگوریتمهای مسیریابی: در مسیریابی، صف اولویتدار کمک میکند تا مسیرهایی با کمترین هزینه یا کوتاهترین زمان شناسایی شوند.
📶 مدیریت منابع: در تخصیص منابعی مثل پهنای باند یا حافظه، صف اولویتدار تضمین میکند که منابع ابتدا به مهمترین درخواستها اختصاص داده شود.
این صف به نوعی شبیه یک سیستم اورژانس است؛ همیشه به مهمترین موضوعات اول رسیدگی میشود! 😊
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
K-Nearest Neighbors (KNN): الگوریتمی ساده اما مؤثر
در واقعKNN یک الگوریتم یادگیری ماشین نظارتشده است که برای طبقهبندی و رگرسیون استفاده میشود. این الگوریتم دادههای جدید را با توجه به نزدیکترین همسایهها در فضای ویژگی طبقهبندی میکند.
🔹 چطور کار میکند؟
1. انتخاب تعداد همسایهها (K).
2. محاسبه فاصله بین نقطه جدید و دادههای موجود.
3. تعیین نزدیکترین K همسایه.
4. اختصاص برچسب بر اساس اکثریت کلاسها در بین K همسایه.
🔹 نقاط کلیدی:
- متریکهای فاصله: شامل فاصله اقلیدسی، منهتن و مینکوفسکی.
- انتخاب K: انتخاب K مناسب، عملکرد مدل را به شدت تحت تأثیر قرار میدهد.
- یادگیری تنبل: KNN از دادههای آموزشی تابع خاصی یاد نمیگیرد و فقط دادهها را حفظ میکند.
🔹 مزایا:
- ساده و قابل فهم
- عدم نیاز به فرضیاتی درباره توزیع دادهها
- مؤثر برای دادههای کوچک و غیرخطی
🔹 معایب:
- محاسبات سنگین برای دادههای بزرگ
- حساس به ویژگیهای نامربوط و مقیاس دادهها
- وابسته به انتخاب K
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
در واقعKNN یک الگوریتم یادگیری ماشین نظارتشده است که برای طبقهبندی و رگرسیون استفاده میشود. این الگوریتم دادههای جدید را با توجه به نزدیکترین همسایهها در فضای ویژگی طبقهبندی میکند.
🔹 چطور کار میکند؟
1. انتخاب تعداد همسایهها (K).
2. محاسبه فاصله بین نقطه جدید و دادههای موجود.
3. تعیین نزدیکترین K همسایه.
4. اختصاص برچسب بر اساس اکثریت کلاسها در بین K همسایه.
🔹 نقاط کلیدی:
- متریکهای فاصله: شامل فاصله اقلیدسی، منهتن و مینکوفسکی.
- انتخاب K: انتخاب K مناسب، عملکرد مدل را به شدت تحت تأثیر قرار میدهد.
- یادگیری تنبل: KNN از دادههای آموزشی تابع خاصی یاد نمیگیرد و فقط دادهها را حفظ میکند.
🔹 مزایا:
- ساده و قابل فهم
- عدم نیاز به فرضیاتی درباره توزیع دادهها
- مؤثر برای دادههای کوچک و غیرخطی
🔹 معایب:
- محاسبات سنگین برای دادههای بزرگ
- حساس به ویژگیهای نامربوط و مقیاس دادهها
- وابسته به انتخاب K
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
DSA interview question .pdf
1.2 MB
اگر شما به دنبال دستیابی به رتبههای برتر در آزمونهای DSA (Data Structures and Algorithms) یا مصاحبههای کاری در شرکتهای برتر هستید، باید با مجموعهای از سوالات پیچیده و چالشبرانگیز آشنا باشید. این سوالات معمولاً روی مفاهیم پایه و عمیق از ساختارهای داده و الگوریتمها تمرکز دارند و شما را ملزم میکنند که نه تنها راهحلهای بهینه ارائه دهید، بلکه آنها را در کوتاهترین زمان ممکن پیادهسازی کنید. در این پست، ما چند نمونه از سوالات DSA را که در مصاحبههای شرکتهای برتر دنیا (Google، Facebook، Amazon و غیره) مطرح شدهاند، با شما به اشتراک میگذاریم.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
هیجانزدهام که این دستاورد جدید در بهینهسازی یادگیری ماشین رو از تیم اپل با شما به اشتراک بذارم!
معرفی AdEMAMix: یک بهینهساز فوقپیشرفته که مفهوم مومنتوم (شتاب) در Stochastic Gradient Descent رو متحول کرده. این تکنیک تازه، از دو میانگین متحرک نمایی بهره میبره تا با ترکیب هوشمندانهای از گرادیانهای اخیر و دادههای اولیه، سرعت یادگیری مدلهای پیچیده رو افزایش بده و در عین حال پایداری و عمومیسازی اونها رو به شدت بهبود ببخشه.
نتیجه؟ بهبود عملکرد و کاهش قابلتوجه فراموشی مدل در طول آموزش، که باعث میشه شبکههای عصبی بهتر از هر زمان دیگهای وظایف متنوع رو انجام بدن.
جزییات بیشتر در لینک زیر می باشد، حتماً چک کنید! 👇
https://arxiv.org/abs//2409.03137
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
معرفی AdEMAMix: یک بهینهساز فوقپیشرفته که مفهوم مومنتوم (شتاب) در Stochastic Gradient Descent رو متحول کرده. این تکنیک تازه، از دو میانگین متحرک نمایی بهره میبره تا با ترکیب هوشمندانهای از گرادیانهای اخیر و دادههای اولیه، سرعت یادگیری مدلهای پیچیده رو افزایش بده و در عین حال پایداری و عمومیسازی اونها رو به شدت بهبود ببخشه.
نتیجه؟ بهبود عملکرد و کاهش قابلتوجه فراموشی مدل در طول آموزش، که باعث میشه شبکههای عصبی بهتر از هر زمان دیگهای وظایف متنوع رو انجام بدن.
جزییات بیشتر در لینک زیر می باشد، حتماً چک کنید! 👇
https://arxiv.org/abs//2409.03137
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
برنامه 100 روزه یادگیری DSA 🎯
روزهای 1 تا 10: پایهگذاری مفاهیم 📚
- پیچیدگی زمان و فضا: یادگیری نمادهای Big-O ⏳💾
- آشنایی و پیادهسازی آرایهها، لیستهای پیوندی، پشته، صف و رشتهها 🔗📦
روزهای 11 تا 25: الگوریتمهای پایه 🧩
- جستجو: جستجوی خطی و دودویی 🔍
- مرتبسازی: حبابی، ادغامی، سریع 🌀🔄
- الگوریتمهای رشتهای و اعداد اول 📜🔢
روزهای 26 تا 40: درختها و گرافها 🌳🗺
- آشنایی با درختها (BST) و گرافها 🌐
- پیمایش درخت: DFS و BFS 🔄🔀
- پیچیدگی عملیات روی این ساختارها 🧮
روزهای 41 تا 60: الگوریتمهای پیشرفته 🚀
- الگوریتمهای گراف: دایکسترا و کوتاهترین مسیر ⏳
- پیمایش و جستجو در گراف 🚦
- الگوریتمهای تقسیم و غلبه 🧩⚡️
روزهای 61 تا 80: برنامهنویسی پویا (Dynamic Programming) 🧠💡
- حل مسائل مشهور: فیبوناچی، کولهپشتی، LCS 🎒
- درک و پیادهسازی تکنیکهای تفکیک و ادغام و برنامهریزی پویا 🔄🧠
روزهای 81 تا 100: مرور و پروژه عملی 🛠
- مرور و بهینهسازی کدها ✍️💻
- حل مسائل پیچیدهتر 🔧
- پروژه عملی 🎓🔑
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
روزهای 1 تا 10: پایهگذاری مفاهیم 📚
- پیچیدگی زمان و فضا: یادگیری نمادهای Big-O ⏳💾
- آشنایی و پیادهسازی آرایهها، لیستهای پیوندی، پشته، صف و رشتهها 🔗📦
روزهای 11 تا 25: الگوریتمهای پایه 🧩
- جستجو: جستجوی خطی و دودویی 🔍
- مرتبسازی: حبابی، ادغامی، سریع 🌀🔄
- الگوریتمهای رشتهای و اعداد اول 📜🔢
روزهای 26 تا 40: درختها و گرافها 🌳🗺
- آشنایی با درختها (BST) و گرافها 🌐
- پیمایش درخت: DFS و BFS 🔄🔀
- پیچیدگی عملیات روی این ساختارها 🧮
روزهای 41 تا 60: الگوریتمهای پیشرفته 🚀
- الگوریتمهای گراف: دایکسترا و کوتاهترین مسیر ⏳
- پیمایش و جستجو در گراف 🚦
- الگوریتمهای تقسیم و غلبه 🧩⚡️
روزهای 61 تا 80: برنامهنویسی پویا (Dynamic Programming) 🧠💡
- حل مسائل مشهور: فیبوناچی، کولهپشتی، LCS 🎒
- درک و پیادهسازی تکنیکهای تفکیک و ادغام و برنامهریزی پویا 🔄🧠
روزهای 81 تا 100: مرور و پروژه عملی 🛠
- مرور و بهینهسازی کدها ✍️💻
- حل مسائل پیچیدهتر 🔧
- پروژه عملی 🎓🔑
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
برنامهنویسی پویا (Dynamic Programming یا DP) یک تکنیک در طراحی الگوریتمها است که برای حل مسائل پیچیده با استفاده از حل مسائل کوچکتر و ذخیره نتایج آنها استفاده میشود. این تکنیک بهطور خاص زمانی مفید است که مسئله دارای زیرمسئلههای همپوشان و ساختار بهینهسازی باشد. 🎯
اصول برنامهنویسی پویا 🧩
دو ویژگی کلیدی مسائل قابل حل با برنامهنویسی پویا عبارتند از:
1. زیرمسئلههای همپوشان (Overlapping Subproblems): بسیاری از مسائل بهینهسازی، مانند پیدا کردن مسیر بهینه یا محاسبه تعداد راههای مختلف برای انجام یک کار، زیرمسئلههای تکراری دارند. در این شرایط، یک مسئله بزرگ به تعداد زیادی زیرمسئله کوچکتر تقسیم میشود و هر یک از این زیرمسئلهها ممکن است چندین بار تکرار شوند. 🔁
2. ساختار بهینهسازی (Optimal Substructure): راهحل بهینه یک مسئله میتواند با ترکیب راهحلهای بهینه زیرمسئلههای آن به دست آید. به عبارت دیگر، هر راهحل بهینه شامل ترکیبی از راهحلهای بهینهی زیرمسئلهها است. 🛠
روشهای پیادهسازی برنامهنویسی پویا 💻
دو روش اصلی برای پیادهسازی برنامهنویسی پویا وجود دارد:
1. بالا به پایین (Top-Down) با استفاده از تکنیک حفظسازی (Memoization): در این روش، مسئله اصلی را به زیرمسئلههای کوچکتر تقسیم کرده و هر بار نتیجه محاسبهشده زیرمسئلهها را ذخیره میکنیم. زمانی که یک زیرمسئله دوباره نیاز باشد، از نتیجه ذخیرهشده استفاده میکنیم، در عوض اینکه دوباره آن را محاسبه کنیم. 📝
2. پایین به بالا (Bottom-Up): در این روش، از زیرمسئلههای سادهتر شروع کرده و آنها را بهتدریج حل میکنیم تا به مسئله اصلی برسیم. این روش به استفاده از آرایهها یا جدولها برای ذخیره نتایج زیرمسئلهها نیاز دارد. این روش اغلب بهینهتر از روش بالا به پایین است زیرا از فراخوانیهای مکرر جلوگیری میکند. 📊
کاربردهای برنامهنویسی پویا 🌐
برنامهنویسی پویا در حل مسائل مختلفی از جمله موارد زیر بسیار کاربردی است:
- مسئلهی کولهپشتی (Knapsack Problem) 🎒
- فاصله ویرایش (Edit Distance) در پردازش زبان طبیعی 📖
- تقسیمبندی زنجیرهی ماتریسها (Matrix Chain Multiplication) 📐
- پیدا کردن زیررشتهی مشترک طولانیترین (Longest Common Subsequence) 🧵
- مسئلهی مسیر یابی (Shortest Path Problem) مانند الگوریتم فلوید-وارشال 🛤
برنامهنویسی پویا به دلیل کاهش محاسبات تکراری و بهینهسازی زیرمسئلهها، یکی از مهمترین ابزارها در طراحی الگوریتمهای کارآمد است. ⚙️
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
اصول برنامهنویسی پویا 🧩
دو ویژگی کلیدی مسائل قابل حل با برنامهنویسی پویا عبارتند از:
1. زیرمسئلههای همپوشان (Overlapping Subproblems): بسیاری از مسائل بهینهسازی، مانند پیدا کردن مسیر بهینه یا محاسبه تعداد راههای مختلف برای انجام یک کار، زیرمسئلههای تکراری دارند. در این شرایط، یک مسئله بزرگ به تعداد زیادی زیرمسئله کوچکتر تقسیم میشود و هر یک از این زیرمسئلهها ممکن است چندین بار تکرار شوند. 🔁
2. ساختار بهینهسازی (Optimal Substructure): راهحل بهینه یک مسئله میتواند با ترکیب راهحلهای بهینه زیرمسئلههای آن به دست آید. به عبارت دیگر، هر راهحل بهینه شامل ترکیبی از راهحلهای بهینهی زیرمسئلهها است. 🛠
روشهای پیادهسازی برنامهنویسی پویا 💻
دو روش اصلی برای پیادهسازی برنامهنویسی پویا وجود دارد:
1. بالا به پایین (Top-Down) با استفاده از تکنیک حفظسازی (Memoization): در این روش، مسئله اصلی را به زیرمسئلههای کوچکتر تقسیم کرده و هر بار نتیجه محاسبهشده زیرمسئلهها را ذخیره میکنیم. زمانی که یک زیرمسئله دوباره نیاز باشد، از نتیجه ذخیرهشده استفاده میکنیم، در عوض اینکه دوباره آن را محاسبه کنیم. 📝
2. پایین به بالا (Bottom-Up): در این روش، از زیرمسئلههای سادهتر شروع کرده و آنها را بهتدریج حل میکنیم تا به مسئله اصلی برسیم. این روش به استفاده از آرایهها یا جدولها برای ذخیره نتایج زیرمسئلهها نیاز دارد. این روش اغلب بهینهتر از روش بالا به پایین است زیرا از فراخوانیهای مکرر جلوگیری میکند. 📊
کاربردهای برنامهنویسی پویا 🌐
برنامهنویسی پویا در حل مسائل مختلفی از جمله موارد زیر بسیار کاربردی است:
- مسئلهی کولهپشتی (Knapsack Problem) 🎒
- فاصله ویرایش (Edit Distance) در پردازش زبان طبیعی 📖
- تقسیمبندی زنجیرهی ماتریسها (Matrix Chain Multiplication) 📐
- پیدا کردن زیررشتهی مشترک طولانیترین (Longest Common Subsequence) 🧵
- مسئلهی مسیر یابی (Shortest Path Problem) مانند الگوریتم فلوید-وارشال 🛤
برنامهنویسی پویا به دلیل کاهش محاسبات تکراری و بهینهسازی زیرمسئلهها، یکی از مهمترین ابزارها در طراحی الگوریتمهای کارآمد است. ⚙️
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
یک پست مفید، آخرین مدل پیشرفته OpenAI به نام o1 را به این صورت خلاصه کرده است:
🔹 بهبود کیفیت: دلیل بهبود این مدل، توانایی آن در استدلال قبل از ارائه پاسخ است. در حالی که خودِ فرآیند استدلال نشان داده نمیشود، یک خلاصه سطح بالا از آن ارائه خواهد شد.
🔹 پیشرفت در استدلال: مدلهای قبلی نیز میتوانستند استدلال کنند، اما با کارایی کمتر. تمرکز OpenAI بر بهبود توانایی مدل در رسیدن به پاسخ صحیح از طریق اصلاح و استدلال مکرر بوده است.
🔹 تمرکز مدل: o1 قرار نیست جایگزین gpt-4o در همه وظایف شود. این مدل در زمینههای ریاضی، فیزیک و برنامهنویسی بهتر عمل میکند، دستورالعملها را دقیقتر دنبال میکند، اما ممکن است در زبانشناسی ضعیفتر باشد و دانش پایه محدودتری داشته باشد. بهتر است این مدل را به عنوان "متفکر" (مانند مفهوم "اندیشمند" در روسی) در نظر بگیرید. نسخه مینی این مدل با gpt-4o-mini قابل مقایسه است و تفاوت بزرگی وجود ندارد.
🔹 دسترسی به مدل: در حال حاضر، این مدل برای تمامی مشترکین پرداختی ChatGPT Plus در دسترس است، اما با محدودیتهای سختگیرانه: 30 پیام در هفته برای مدل بزرگ و 50 پیام برای نسخه مینی. بنابراین، درخواستهای خود را با دقت برنامهریزی کنید!
🔹 دسترسی از طریق API: اگر از API به طور مکرر استفاده کردهاید و در گذشته بیش از 1000 دلار هزینه کردهاید، میتوانید از طریق API به این مدل دسترسی داشته باشید، اما با محدودیت 20 درخواست در دقیقه.
🔹 هزینهها: هزینهها بالاست: نسخه کوچکتر o1-mini کمی گرانتر از نسخه gpt-4o در ماه آگوست است. در واقع شما برای استدلالهایی که مدل انجام میدهد (و نمیبینید)، هزینه پرداخت میکنید که ممکن است به طور قابل توجهی بیشتر باشد. بنابراین، افزایش قیمت میتواند بین 3 تا 10 برابر باشد، بسته به میزان زمانی که مدل برای "تفکر" صرف میکند.
🔹 تواناییها: این مدل مسائل ریاضی و برنامهنویسی در سطح المپیاد را با مهارت برندههای بینالمللی حل میکند و برای مسائل پیچیده فیزیکی که به سادگی با جستجوی گوگل قابل حل نیستند، در سطح یک دانشجوی دکتری (~75-80% صحیح) عمل میکند.
🔹 ویژگیها: در حال حاضر، مدل نمیتواند از تصاویر استفاده کند، در اینترنت جستجو کند یا کد اجرا کند، اما این ویژگیها به زودی اضافه خواهند شد.
🔹 محدودیتها: زمینه (Context) مدل هنوز به 128 هزار توکن محدود است، مشابه نسخههای قبلی. با این حال، انتظار میرود این مقدار در آینده افزایش یابد، زیرا OpenAI ادعا میکند که مدل در حال حاضر به مدت چند دقیقه "فکر" میکند و هدف، افزایش این مدت زمان است.
🔹 مشکلات اولیه: مانند هر انتشار اولیه، ممکن است برخی باگهای ساده وجود داشته باشد که مدل به درخواستهای واضح پاسخ ندهد یا به "راههای فرار" منجر شود. این موضوع طبیعی است و انتظار میرود این مشکلات طی 2-3 ماه کاهش یابد، زمانی که مدل از حالت پیشنمایش خارج شود.
🔹 نسخه غیر پیشنمایش: OpenAI در حال حاضر نسخه غیر پیشنمایش این مدل را در اختیار دارد که در حال آزمایش است و گفته میشود از نسخه فعلی بهتر است.
🔹 عملکرد خودکار: مدل جدید بدون نیاز به درخواستهای خاص عمل میکند؛ نیازی نیست از آن بخواهید بهطور دقیق و مرحلهبهمرحله پاسخ دهد، این کار بهصورت خودکار در پسزمینه انجام خواهد شد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
🔹 بهبود کیفیت: دلیل بهبود این مدل، توانایی آن در استدلال قبل از ارائه پاسخ است. در حالی که خودِ فرآیند استدلال نشان داده نمیشود، یک خلاصه سطح بالا از آن ارائه خواهد شد.
🔹 پیشرفت در استدلال: مدلهای قبلی نیز میتوانستند استدلال کنند، اما با کارایی کمتر. تمرکز OpenAI بر بهبود توانایی مدل در رسیدن به پاسخ صحیح از طریق اصلاح و استدلال مکرر بوده است.
🔹 تمرکز مدل: o1 قرار نیست جایگزین gpt-4o در همه وظایف شود. این مدل در زمینههای ریاضی، فیزیک و برنامهنویسی بهتر عمل میکند، دستورالعملها را دقیقتر دنبال میکند، اما ممکن است در زبانشناسی ضعیفتر باشد و دانش پایه محدودتری داشته باشد. بهتر است این مدل را به عنوان "متفکر" (مانند مفهوم "اندیشمند" در روسی) در نظر بگیرید. نسخه مینی این مدل با gpt-4o-mini قابل مقایسه است و تفاوت بزرگی وجود ندارد.
🔹 دسترسی به مدل: در حال حاضر، این مدل برای تمامی مشترکین پرداختی ChatGPT Plus در دسترس است، اما با محدودیتهای سختگیرانه: 30 پیام در هفته برای مدل بزرگ و 50 پیام برای نسخه مینی. بنابراین، درخواستهای خود را با دقت برنامهریزی کنید!
🔹 دسترسی از طریق API: اگر از API به طور مکرر استفاده کردهاید و در گذشته بیش از 1000 دلار هزینه کردهاید، میتوانید از طریق API به این مدل دسترسی داشته باشید، اما با محدودیت 20 درخواست در دقیقه.
🔹 هزینهها: هزینهها بالاست: نسخه کوچکتر o1-mini کمی گرانتر از نسخه gpt-4o در ماه آگوست است. در واقع شما برای استدلالهایی که مدل انجام میدهد (و نمیبینید)، هزینه پرداخت میکنید که ممکن است به طور قابل توجهی بیشتر باشد. بنابراین، افزایش قیمت میتواند بین 3 تا 10 برابر باشد، بسته به میزان زمانی که مدل برای "تفکر" صرف میکند.
🔹 تواناییها: این مدل مسائل ریاضی و برنامهنویسی در سطح المپیاد را با مهارت برندههای بینالمللی حل میکند و برای مسائل پیچیده فیزیکی که به سادگی با جستجوی گوگل قابل حل نیستند، در سطح یک دانشجوی دکتری (~75-80% صحیح) عمل میکند.
🔹 ویژگیها: در حال حاضر، مدل نمیتواند از تصاویر استفاده کند، در اینترنت جستجو کند یا کد اجرا کند، اما این ویژگیها به زودی اضافه خواهند شد.
🔹 محدودیتها: زمینه (Context) مدل هنوز به 128 هزار توکن محدود است، مشابه نسخههای قبلی. با این حال، انتظار میرود این مقدار در آینده افزایش یابد، زیرا OpenAI ادعا میکند که مدل در حال حاضر به مدت چند دقیقه "فکر" میکند و هدف، افزایش این مدت زمان است.
🔹 مشکلات اولیه: مانند هر انتشار اولیه، ممکن است برخی باگهای ساده وجود داشته باشد که مدل به درخواستهای واضح پاسخ ندهد یا به "راههای فرار" منجر شود. این موضوع طبیعی است و انتظار میرود این مشکلات طی 2-3 ماه کاهش یابد، زمانی که مدل از حالت پیشنمایش خارج شود.
🔹 نسخه غیر پیشنمایش: OpenAI در حال حاضر نسخه غیر پیشنمایش این مدل را در اختیار دارد که در حال آزمایش است و گفته میشود از نسخه فعلی بهتر است.
🔹 عملکرد خودکار: مدل جدید بدون نیاز به درخواستهای خاص عمل میکند؛ نیازی نیست از آن بخواهید بهطور دقیق و مرحلهبهمرحله پاسخ دهد، این کار بهصورت خودکار در پسزمینه انجام خواهد شد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
"ویرایش تعاملی مبتنی بر کشیدن"
👉Review https://t.ly/hy6SL
👉Paper arxiv.org/pdf/2409.08857
👉Project joonghyuk.com/instantdrag-web/
👉Code github.com/alex4727/InstantDrag
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👉Review https://t.ly/hy6SL
👉Paper arxiv.org/pdf/2409.08857
👉Project joonghyuk.com/instantdrag-web/
👉Code github.com/alex4727/InstantDrag
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
الگوریتم هافمن 😎🧑💻
یکی از روشهای فوقالعاده برای فشردهسازی دادههاست 📦💾. توسط دیوید هافمن در سال ۱۹۵۲ ابداع شد و هدف اصلیاش کم کردن تعداد بیتها برای ذخیره یا انتقال دادههاست 💡⬇️.
مراحل کار چیه؟ 🛠
1. محاسبه فراوانیها 📊: تعداد دفعات تکرار هر کاراکتر در متن ورودی رو حساب میکنیم. این همون چیزیه که الگوریتم بر اساسش کار میکنه 🔍.
2. ساخت درخت هافمن 🌳: الگوریتم، یک درخت با استفاده از فراوانی کاراکترها ایجاد میکنه. چجوری؟
- هر کاراکتر میشه یک "گره برگ" 🍃.
- گرههایی که کمترین فراوانی دارن، با هم ترکیب میشن و به یک گره والد جدید متصل میشن 🤝.
- این کار رو ادامه میدیم تا درخت کامل بشه 🪜.
3. تخصیص کدهای باینری 💻: هر کاراکتر بر اساس مسیر خودش در درخت، یک کد باینری میگیره. هر بار به چپ برویم = 0 🕶⬅️ و هر بار به راست برویم = 1 🕶➡️.
4. کدگذاری دادهها 📥: حالا که برای هر کاراکتر کد مشخص شده، دادهها رو با اون کدها فشرده میکنیم.
مثال ساده 📝
فرض کن کلمه "BCAABB" رو داریم:
- فراوانیها: 'A': 2 بار، 'B': 3 بار، 'C': 1 بار.
- درخت هافمن: گرهها رو ترکیب میکنیم تا درخت درست بشه.
- کدگذاری: مثلاً میشه 'A': 01، 'B': 1، 'C': 00.
- خروجی: "BCAABB" تبدیل میشه به "100011011" 🔢.
مزایا و کاربردها 🎯
- کارایی بالا 🚀: برای دادههایی که تکراری هستن، بسیار کارآمده.
- بدون اتلاف 💯: کدگذاری هافمن بدون از دست دادن اطلاعات انجام میشه.
- کاربردها: از فایلهای متنی تا صوتی 🎵 و تصویری 📸، همه جا به کار میاد.
محدودیتها ⚠️
- اگر کاراکترها توزیع یکسانی داشته باشن، هافمن بهترین روش نیست 🤔.
- ساخت درخت برای دادههای خیلی بزرگ ممکنه زمانبر باشه 🕰.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
یکی از روشهای فوقالعاده برای فشردهسازی دادههاست 📦💾. توسط دیوید هافمن در سال ۱۹۵۲ ابداع شد و هدف اصلیاش کم کردن تعداد بیتها برای ذخیره یا انتقال دادههاست 💡⬇️.
مراحل کار چیه؟ 🛠
1. محاسبه فراوانیها 📊: تعداد دفعات تکرار هر کاراکتر در متن ورودی رو حساب میکنیم. این همون چیزیه که الگوریتم بر اساسش کار میکنه 🔍.
2. ساخت درخت هافمن 🌳: الگوریتم، یک درخت با استفاده از فراوانی کاراکترها ایجاد میکنه. چجوری؟
- هر کاراکتر میشه یک "گره برگ" 🍃.
- گرههایی که کمترین فراوانی دارن، با هم ترکیب میشن و به یک گره والد جدید متصل میشن 🤝.
- این کار رو ادامه میدیم تا درخت کامل بشه 🪜.
3. تخصیص کدهای باینری 💻: هر کاراکتر بر اساس مسیر خودش در درخت، یک کد باینری میگیره. هر بار به چپ برویم = 0 🕶⬅️ و هر بار به راست برویم = 1 🕶➡️.
4. کدگذاری دادهها 📥: حالا که برای هر کاراکتر کد مشخص شده، دادهها رو با اون کدها فشرده میکنیم.
مثال ساده 📝
فرض کن کلمه "BCAABB" رو داریم:
- فراوانیها: 'A': 2 بار، 'B': 3 بار، 'C': 1 بار.
- درخت هافمن: گرهها رو ترکیب میکنیم تا درخت درست بشه.
- کدگذاری: مثلاً میشه 'A': 01، 'B': 1، 'C': 00.
- خروجی: "BCAABB" تبدیل میشه به "100011011" 🔢.
مزایا و کاربردها 🎯
- کارایی بالا 🚀: برای دادههایی که تکراری هستن، بسیار کارآمده.
- بدون اتلاف 💯: کدگذاری هافمن بدون از دست دادن اطلاعات انجام میشه.
- کاربردها: از فایلهای متنی تا صوتی 🎵 و تصویری 📸، همه جا به کار میاد.
محدودیتها ⚠️
- اگر کاراکترها توزیع یکسانی داشته باشن، هافمن بهترین روش نیست 🤔.
- ساخت درخت برای دادههای خیلی بزرگ ممکنه زمانبر باشه 🕰.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
توسعه سریع مدلهای هوش مصنوعی باعث افزایش تقاضا برای منابع محاسباتی شده است. درخواستهای پردازش هر شش ماه دو برابر میشوند! 🧠💻 این تغییر توجه دوبارهای به شرکتهای تولیدکننده ریزپردازندهها جلب کرده که قبلاً تحتالشعاع غولهای نرمافزاری بودند. 🏢🌐
با اینکه فناوری پیشرفت کرده، مفاهیم اصلی ساخت تراشهها تا حد زیادی ثابت مانده و فقط بهبودهای کوچکی داشتهاند. 📉 این نشان میدهد که روشهای فعلی ممکن است دیگر کافی نباشند تا به نیازهای رو به افزایش هوش مصنوعی پاسخ دهند. 🤔
برای پیشرفت سریع، تولیدکنندگان تراشه باید به دنبال ایدههای جدید باشند. برخی از این ایدهها مثل هماهنگی بیشتر سختافزار و نرمافزار بهبودهای جزئی هستند، اما برخی دیگر نیاز به تغییرات اساسی در طراحی دارند. 💡🔧
این تغییرات ممکن است شامل استفاده از مواد جدید در تراشههای سیلیکونی یا حتی کنار گذاشتن روشهای معمول پردازش دیجیتال باشند. 🌱🚀 با رشد تقاضا برای هوش مصنوعی، صنعت باید برای همگام شدن با تکنولوژی، نوآوری کند. 🌐✨
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
با اینکه فناوری پیشرفت کرده، مفاهیم اصلی ساخت تراشهها تا حد زیادی ثابت مانده و فقط بهبودهای کوچکی داشتهاند. 📉 این نشان میدهد که روشهای فعلی ممکن است دیگر کافی نباشند تا به نیازهای رو به افزایش هوش مصنوعی پاسخ دهند. 🤔
برای پیشرفت سریع، تولیدکنندگان تراشه باید به دنبال ایدههای جدید باشند. برخی از این ایدهها مثل هماهنگی بیشتر سختافزار و نرمافزار بهبودهای جزئی هستند، اما برخی دیگر نیاز به تغییرات اساسی در طراحی دارند. 💡🔧
این تغییرات ممکن است شامل استفاده از مواد جدید در تراشههای سیلیکونی یا حتی کنار گذاشتن روشهای معمول پردازش دیجیتال باشند. 🌱🚀 با رشد تقاضا برای هوش مصنوعی، صنعت باید برای همگام شدن با تکنولوژی، نوآوری کند. 🌐✨
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
Merge sort :
در حالت عادی مرج سورت، آرایه به صورت مکرر به دو نیمه تقسیم میشود. این تقسیمات منجر به تعداد سطحهای بازگشتی به اندازهی(log_2(n) ) میشوند که در هر سطح، ادغام نیمهها در زمان ( O(n)) انجام میگیرد. بنابراین، پیچیدگی زمانی مرج سورت معمولی برابر با ( O(n log n)) است. ✅
اما اگر تقسیم آرایه به صورت "مورب" انجام شود و باعث ایجاد بخشهای نامتقارن شود، مثلاً در هر تقسیم یک بخش بزرگ و یک بخش کوچک داشته باشیم، شرایط پیچیدهتر خواهد شد. فرض کنیم در هر تقسیم، آرایه به دو قسمت \( n-1 \) و 1 تقسیم شود. در این حالت:
1. تعداد تقسیمها: از آنجا که در هر مرحله تنها یک عنصر از مسئله حذف میشود، به ( n ) سطح برای تجزیه کل آرایه نیاز است. 🤯
2. ادغام: در هر یک از این ( n) سطح، ادغام زیردنبالهها به زمان( O(n)) نیاز دارد.
در نتیجه، ترکیب این دو عامل منجر به پیچیدگی زمانی زیر میشود:
[ O(n^2) ]
خلاصه 📝
وقتی مرج سورت آرایه را به صورت نامتقارن (مورب) تقسیم میکند، پیچیدگی زمانی آن از ( O(n log n) ) به( O(n^2) ) افت پیدا میکند که نشاندهندهی ناکارآمدی این روش تقسیم است.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
در حالت عادی مرج سورت، آرایه به صورت مکرر به دو نیمه تقسیم میشود. این تقسیمات منجر به تعداد سطحهای بازگشتی به اندازهی(log_2(n) ) میشوند که در هر سطح، ادغام نیمهها در زمان ( O(n)) انجام میگیرد. بنابراین، پیچیدگی زمانی مرج سورت معمولی برابر با ( O(n log n)) است. ✅
اما اگر تقسیم آرایه به صورت "مورب" انجام شود و باعث ایجاد بخشهای نامتقارن شود، مثلاً در هر تقسیم یک بخش بزرگ و یک بخش کوچک داشته باشیم، شرایط پیچیدهتر خواهد شد. فرض کنیم در هر تقسیم، آرایه به دو قسمت \( n-1 \) و 1 تقسیم شود. در این حالت:
1. تعداد تقسیمها: از آنجا که در هر مرحله تنها یک عنصر از مسئله حذف میشود، به ( n ) سطح برای تجزیه کل آرایه نیاز است. 🤯
2. ادغام: در هر یک از این ( n) سطح، ادغام زیردنبالهها به زمان( O(n)) نیاز دارد.
در نتیجه، ترکیب این دو عامل منجر به پیچیدگی زمانی زیر میشود:
[ O(n^2) ]
خلاصه 📝
وقتی مرج سورت آرایه را به صورت نامتقارن (مورب) تقسیم میکند، پیچیدگی زمانی آن از ( O(n log n) ) به( O(n^2) ) افت پیدا میکند که نشاندهندهی ناکارآمدی این روش تقسیم است.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer