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
👍2
الگوریتم هافمن 😎🧑💻
یکی از روشهای فوقالعاده برای فشردهسازی دادههاست 📦💾. توسط دیوید هافمن در سال ۱۹۵۲ ابداع شد و هدف اصلیاش کم کردن تعداد بیتها برای ذخیره یا انتقال دادههاست 💡⬇️.
مراحل کار چیه؟ 🛠
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
👍4
توسعه سریع مدلهای هوش مصنوعی باعث افزایش تقاضا برای منابع محاسباتی شده است. درخواستهای پردازش هر شش ماه دو برابر میشوند! 🧠💻 این تغییر توجه دوبارهای به شرکتهای تولیدکننده ریزپردازندهها جلب کرده که قبلاً تحتالشعاع غولهای نرمافزاری بودند. 🏢🌐
با اینکه فناوری پیشرفت کرده، مفاهیم اصلی ساخت تراشهها تا حد زیادی ثابت مانده و فقط بهبودهای کوچکی داشتهاند. 📉 این نشان میدهد که روشهای فعلی ممکن است دیگر کافی نباشند تا به نیازهای رو به افزایش هوش مصنوعی پاسخ دهند. 🤔
برای پیشرفت سریع، تولیدکنندگان تراشه باید به دنبال ایدههای جدید باشند. برخی از این ایدهها مثل هماهنگی بیشتر سختافزار و نرمافزار بهبودهای جزئی هستند، اما برخی دیگر نیاز به تغییرات اساسی در طراحی دارند. 💡🔧
این تغییرات ممکن است شامل استفاده از مواد جدید در تراشههای سیلیکونی یا حتی کنار گذاشتن روشهای معمول پردازش دیجیتال باشند. 🌱🚀 با رشد تقاضا برای هوش مصنوعی، صنعت باید برای همگام شدن با تکنولوژی، نوآوری کند. 🌐✨
#هوش_مصنوعی
📣👨💻 @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
👍4
🎓 اگر به دنبال یادگیری هوش مصنوعی و استفاده از ابزارهای پیشرفته هستید، SharifGPT بهترین انتخاب شماست!
ما، تیمی از دانشجویان و فارغالتحصیلان دانشگاه شریف، اینجاییم تا به شما کمک کنیم با هوش مصنوعی، مهارتهای جدید کسب کنید و کارهایتان را با سرعت و دقت بیشتری انجام دهید.
به کانال ما بپیوندید و از دورهها و کارگاههای آموزشی بهرهمند شوید. راه موفقیت و پیشرفت با SharifGPT هموارتر است! 🌟
آدرس کانال: https://t.me/+QAsJfLpbaHJiMzQ0 🚀
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
ما، تیمی از دانشجویان و فارغالتحصیلان دانشگاه شریف، اینجاییم تا به شما کمک کنیم با هوش مصنوعی، مهارتهای جدید کسب کنید و کارهایتان را با سرعت و دقت بیشتری انجام دهید.
به کانال ما بپیوندید و از دورهها و کارگاههای آموزشی بهرهمند شوید. راه موفقیت و پیشرفت با SharifGPT هموارتر است! 🌟
آدرس کانال: https://t.me/+QAsJfLpbaHJiMzQ0 🚀
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👍3
📚 ثبتنام دورهی رایگان یادگیری ماشین - پاییز ۱۴۰۳ 📚
برای حضور مجازی در کلاسهای درس یادگیری ماشین دانشکدهی مهندسی کامپیوتر دانشگاه صنعتی شریف در پاییز ۱۴۰۳، میتوانید از طریق فرم زیر ثبتنام کنید.
این دوره با همکاری یک تیم ۷۰ نفره از دانشجویان و دانشآموختگان دانشگاه شریف و سایر دانشگاهها و با تدریس علی شریفی زارچی ارائه میشود. کلاسها هر هفته در روزهای یکشنبه و سهشنبه از ساعت ۹ تا ۱۰:۳۰ برگزار خواهد شد و از اول مهر تا ۱۱ دی ۱۴۰۳ ادامه دارد.
✅ شرکت در این دوره رایگان و برای همهی دانشجویان علاقهمند آزاد است. لازم به ذکر است که این دوره مدرک دانشگاهی ندارد.
⚠️ برای شرکت در این دوره، آشنایی با مفاهیم زیر ضروری است:
- برنامهنویسی پایتون 🐍
- آمار و احتمال 📊
- ریاضی عمومی دانشگاهی 📐
- الگوریتم و جبر خطی 🧮
📌 فرصت را از دست ندهید! همین حالا ثبتنام کنید و از آموزشهای تخصصی و حرفهای بهرهمند شوید.
📎https://www.sharifml.ir/
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
برای حضور مجازی در کلاسهای درس یادگیری ماشین دانشکدهی مهندسی کامپیوتر دانشگاه صنعتی شریف در پاییز ۱۴۰۳، میتوانید از طریق فرم زیر ثبتنام کنید.
این دوره با همکاری یک تیم ۷۰ نفره از دانشجویان و دانشآموختگان دانشگاه شریف و سایر دانشگاهها و با تدریس علی شریفی زارچی ارائه میشود. کلاسها هر هفته در روزهای یکشنبه و سهشنبه از ساعت ۹ تا ۱۰:۳۰ برگزار خواهد شد و از اول مهر تا ۱۱ دی ۱۴۰۳ ادامه دارد.
✅ شرکت در این دوره رایگان و برای همهی دانشجویان علاقهمند آزاد است. لازم به ذکر است که این دوره مدرک دانشگاهی ندارد.
⚠️ برای شرکت در این دوره، آشنایی با مفاهیم زیر ضروری است:
- برنامهنویسی پایتون 🐍
- آمار و احتمال 📊
- ریاضی عمومی دانشگاهی 📐
- الگوریتم و جبر خطی 🧮
📌 فرصت را از دست ندهید! همین حالا ثبتنام کنید و از آموزشهای تخصصی و حرفهای بهرهمند شوید.
📎https://www.sharifml.ir/
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
🙏4💯1
هوش مصنوعی وقوع جرم را قبل از رخ دادن پیشبینی میکند! 🤯
🔹 در واقع Dejaview رفتار انسانی، دادههای مکانی و سوابق وقایع گذشته را بررسی میکند و با نرخ دقت ۸۲.۸٪ وقوع جرم را پیشبینی میکند.
🔹 این سیستم قادر است تکرار مجرمان را شناسایی کرده تا نیت آنها را ارزیابی کرده و به جلوگیری از وقوع جرایم قبل از وقوع آنها کمک کند. این سیستم در حال حاضر در فرودگاهها، کارخانهها و مناطق عمومی در کره جنوبی استفاده میشود.
🔹 توسعهدهندگان قصد دارند آن را تا سال ۲۰۲۵ به عموم مردم عرضه کنند.
This AI claims to predict crimes before they happen based on real-time CCTV analysis
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
🔹 در واقع Dejaview رفتار انسانی، دادههای مکانی و سوابق وقایع گذشته را بررسی میکند و با نرخ دقت ۸۲.۸٪ وقوع جرم را پیشبینی میکند.
🔹 این سیستم قادر است تکرار مجرمان را شناسایی کرده تا نیت آنها را ارزیابی کرده و به جلوگیری از وقوع جرایم قبل از وقوع آنها کمک کند. این سیستم در حال حاضر در فرودگاهها، کارخانهها و مناطق عمومی در کره جنوبی استفاده میشود.
🔹 توسعهدهندگان قصد دارند آن را تا سال ۲۰۲۵ به عموم مردم عرضه کنند.
This AI claims to predict crimes before they happen based on real-time CCTV analysis
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
جزوه کامل ساختمان داده.rar
19.3 MB
📚درس: ساختمان دادهها
👨🏫مدرس: الهه دری
🏛دانشگاه: آزاد اسلامی
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👨🏫مدرس: الهه دری
🏛دانشگاه: آزاد اسلامی
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
با شروع ترم جدید، قصد دارم برای دوستانی که این ترم درسهای "طراحی الگوریتم" و "ساختمان داده" را دارند، یک آموزش کامل و جامع ارائه کنم. از تعاریف ابتدایی این دروس شروع میکنیم و هر هفته، مطابق با پیشروی اساتید محترم، فصلها را بررسی خواهیم کرد. این آموزش شامل توضیحات مفهومی و حل برخی از سوالات نیز خواهد بود. اگر در طول مسیر سوال یا مشکلی داشتید، میتوانید از طریق ادمین کانال سوالات خود را مطرح کنید؛ حتماً راهنماییهای لازم را دریافت خواهید کرد.
با تشکر از همکاری و همراهی شما 🙏
با تشکر از همکاری و همراهی شما 🙏
👌16😍4👍3
ساختمان دادهها (Data Structure) 🏗 یکی از پایههای اساسی در علم کامپیوتر است که به سازماندهی و ساختاردهی دادهها کمک میکند تا بتوان به سرعت و بهینه به آنها دسترسی پیدا کرد. این ساختارها شامل آرایهها 📊، لیستهای پیوندی 🔗، درختها 🌳، گرافها 🌐 و بسیاری از ساختارهای دیگر میشود که هر یک برای کاربردهای خاص خود مناسب هستند. بهطور مثال، برای جستجوی سریع در دادهها، میتوان از ساختارهایی مانند درخت جستجوی دودویی (Binary Search Tree) 🧐 استفاده کرد.
از سوی دیگر، طراحی الگوریتم (Algorithm Design) 💻 فرآیندی است که در آن الگوریتمهایی برای حل مسائل ایجاد میشوند. الگوریتمها دستورالعملهای گامبهگام هستند که به کامپیوتر میگویند چگونه یک مسئله را حل کند. یک الگوریتم بهینه باید بتواند با حداقل استفاده از منابع و زمان ⏱، به بهترین نتیجه برسد. برای مثال، الگوریتم مرتبسازی سریع (QuickSort) ⚡️ یکی از الگوریتمهای کارآمد برای مرتبسازی دادهها است.
👨💻 ساختمان دادهها و الگوریتمها در کنار هم مثل ابزارهای یک مهندس هستند که برای حل مسائل پیچیده و ساخت نرمافزارهای کارآمد به کار میروند. مهندس نرمافزار باید بداند که از کدام ساختمان داده برای کدام مسئله استفاده کند تا الگوریتمهای بهتری طراحی کند.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
از سوی دیگر، طراحی الگوریتم (Algorithm Design) 💻 فرآیندی است که در آن الگوریتمهایی برای حل مسائل ایجاد میشوند. الگوریتمها دستورالعملهای گامبهگام هستند که به کامپیوتر میگویند چگونه یک مسئله را حل کند. یک الگوریتم بهینه باید بتواند با حداقل استفاده از منابع و زمان ⏱، به بهترین نتیجه برسد. برای مثال، الگوریتم مرتبسازی سریع (QuickSort) ⚡️ یکی از الگوریتمهای کارآمد برای مرتبسازی دادهها است.
👨💻 ساختمان دادهها و الگوریتمها در کنار هم مثل ابزارهای یک مهندس هستند که برای حل مسائل پیچیده و ساخت نرمافزارهای کارآمد به کار میروند. مهندس نرمافزار باید بداند که از کدام ساختمان داده برای کدام مسئله استفاده کند تا الگوریتمهای بهتری طراحی کند.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👏6😍1
This media is not supported in your browser
VIEW IN TELEGRAM
دانشگاه واشنگتن آمریکا یک کورس کلاسی #یادگیری_ماشین برای #فیزیک داره که میتونین اینجا مطالعه کنید.
▪️ Physics Informed Machine Learning
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
▪️ Physics Informed Machine Learning
Physics may be embedded into AI/ML in 5 stages:
1 choose what to Model
2 curate training Data
3 design an Architecture
4 craft a Loss Function, and
5 implement Optimization Algorithm to train the model
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
🙏8👍1
در ساختمان داده و تحلیل الگوریتمها، رشد توابع (Growth of Functions) به بررسی نحوه افزایش زمان اجرای یک الگوریتم یا مقدار حافظه مورد نیاز آن نسبت به اندازه ورودی (معمولاً (n)میپردازد 📊. این تحلیل برای پیشبینی کارایی الگوریتمها و انتخاب بهترین الگوریتم برای یک مسئله بسیار مهم است. در ادامه انواع توابع رشد و نحوه مقایسه آنها را توضیح میدهم:
1. توابع ثابت (Constant Function) – (O(1
- این نوع توابع نشان میدهند که زمان اجرای الگوریتم با تغییر اندازه ورودی تغییر نمیکند و همیشه ثابت است ⏱. به عنوان مثال:
- دسترسی مستقیم به یک عنصر در آرایه (مثل (array[i]) زمان ثابت دارد.
2. توابع لگاریتمی (Logarithmic Functions) – (O(log n
- در اینجا زمان اجرا با افزایش ورودی به صورت لگاریتمی افزایش مییابد 📈. یعنی رشد زمان اجرا بسیار کند است. به عنوان مثال، الگوریتمهایی که دادهها را به صورت مکرر به نصف تقسیم میکنند، مانند:
- جستجوی دودویی (Binary Search) 🔍: در هر مرحله اندازه فضای جستجو نصف میشود، بنابراین پیچیدگی زمانی آن O(log n) است.
3. توابع خطی (Linear Functions) – \O(n)
- در این حالت، زمان اجرا به طور مستقیم و با نسبت 1:1 با اندازه ورودی افزایش مییابد 📐. به عنوان مثال:
- پیمایش یا جستجو در یک لیست از اندازه(n) به زمان خطی (O(n نیاز دارد.
4. توابع خطی لگاریتمی (Linearithmic Functions) – (O(n log n
- این نوع تابعها سریعتر از توابع خطی رشد میکنند ولی از توابع درجه دوم (چندجملهای) کندتر هستند 🌀. الگوریتمهای کارآمد مرتبسازی مانند:
- مرتبسازی سریع (Quick Sort) و مرتبسازی ادغامی (Merge Sort) معمولاً پیچیدگی زمانی (O(n log n دارند.
5. توابع چندجملهای (Polynomial Functions)
- در این توابع، زمان اجرا به صورت درجه \(k\) از \(n\) افزایش مییابد 📊:
-پیچدگی O(n^2): مانند مرتبسازی حبابی (Bubble Sort) 🫧 و مرتبسازی انتخابی (Selection Sort) که زمان اجرای آنها درجه دوم است.
-پیچدگی O(n^3): در برخی از الگوریتمهای پیچیدهتر ممکن است مشاهده شود.
6. توابع نمایی (Exponential Functions) – (O(2^n
- در این حالت، زمان اجرا با نرخ بسیار سریعی افزایش مییابد 🚀، به گونهای که هر واحد افزایش در اندازه ورودی باعث دو برابر شدن زمان اجرا میشود. به عنوان مثال:
- الگوریتمهای بررسی تمامی حالات (Brute Force) برای حل مسائلی مانند مسئله کولهپشتی (Knapsack Problem) 🎒 یا مجموعههای مستقل (Independent Set Problem) معمولاً زمان نمایی دارند.
7. توابع فاکتوریل (Factorial Functions) –(O(n!
- این تابعها بسیار سریعتر از توابع نمایی رشد میکنند و معمولاً برای مسائل بسیار پیچیده استفاده میشوند 💥. به عنوان مثال:
- مسئله مرتبسازی تمامی جایگشتها (Permutations) زمان O(n!)) دارد، زیرا همه جایگشتهای ممکن بررسی میشوند.
8. مقایسه رشد توابع
برای فهم بهتر رشد توابع، میتوان آنها را از نظر نرخ رشد مقایسه کرد:
O(1) < O(log n) < O(n) < O(n log n) < O(n^2) < O(n^3) < O(2^n) < O(n!)
در عمل، وقتی (n) (اندازه ورودی) بزرگ میشود، توابعی مانند O(2^n) و O(n!) رشد بسیار سریعی دارند و اغلب غیرعملی هستند 🚫. از سوی دیگر، توابعی مانند O(log n)و O(n)کارایی بسیار بالایی دارند ✅.
9. معنی عملی رشد توابع
- الگوریتمهایی با پیچیدگی زمانی پایینتر (مانند O(n)یا (O(log n برای مسائل با ورودیهای بزرگ بسیار مناسبتر هستند 🏃♂️.
- الگوریتمهای با پیچیدگی بالاتر (مانند (O(n^2 یا O(2^n)معمولاً برای مسائل کوچک یا در شرایط خاص به کار میروند 🛑.
در کل، فهم رشد توابع به ما کمک میکند تا الگوریتمهای مختلف را از نظر کارایی مقایسه کنیم و مناسبترین گزینه را برای حل مسائل مختلف انتخاب کنیم 🎯.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
1. توابع ثابت (Constant Function) – (O(1
- این نوع توابع نشان میدهند که زمان اجرای الگوریتم با تغییر اندازه ورودی تغییر نمیکند و همیشه ثابت است ⏱. به عنوان مثال:
- دسترسی مستقیم به یک عنصر در آرایه (مثل (array[i]) زمان ثابت دارد.
2. توابع لگاریتمی (Logarithmic Functions) – (O(log n
- در اینجا زمان اجرا با افزایش ورودی به صورت لگاریتمی افزایش مییابد 📈. یعنی رشد زمان اجرا بسیار کند است. به عنوان مثال، الگوریتمهایی که دادهها را به صورت مکرر به نصف تقسیم میکنند، مانند:
- جستجوی دودویی (Binary Search) 🔍: در هر مرحله اندازه فضای جستجو نصف میشود، بنابراین پیچیدگی زمانی آن O(log n) است.
3. توابع خطی (Linear Functions) – \O(n)
- در این حالت، زمان اجرا به طور مستقیم و با نسبت 1:1 با اندازه ورودی افزایش مییابد 📐. به عنوان مثال:
- پیمایش یا جستجو در یک لیست از اندازه(n) به زمان خطی (O(n نیاز دارد.
4. توابع خطی لگاریتمی (Linearithmic Functions) – (O(n log n
- این نوع تابعها سریعتر از توابع خطی رشد میکنند ولی از توابع درجه دوم (چندجملهای) کندتر هستند 🌀. الگوریتمهای کارآمد مرتبسازی مانند:
- مرتبسازی سریع (Quick Sort) و مرتبسازی ادغامی (Merge Sort) معمولاً پیچیدگی زمانی (O(n log n دارند.
5. توابع چندجملهای (Polynomial Functions)
- در این توابع، زمان اجرا به صورت درجه \(k\) از \(n\) افزایش مییابد 📊:
-پیچدگی O(n^2): مانند مرتبسازی حبابی (Bubble Sort) 🫧 و مرتبسازی انتخابی (Selection Sort) که زمان اجرای آنها درجه دوم است.
-پیچدگی O(n^3): در برخی از الگوریتمهای پیچیدهتر ممکن است مشاهده شود.
6. توابع نمایی (Exponential Functions) – (O(2^n
- در این حالت، زمان اجرا با نرخ بسیار سریعی افزایش مییابد 🚀، به گونهای که هر واحد افزایش در اندازه ورودی باعث دو برابر شدن زمان اجرا میشود. به عنوان مثال:
- الگوریتمهای بررسی تمامی حالات (Brute Force) برای حل مسائلی مانند مسئله کولهپشتی (Knapsack Problem) 🎒 یا مجموعههای مستقل (Independent Set Problem) معمولاً زمان نمایی دارند.
7. توابع فاکتوریل (Factorial Functions) –(O(n!
- این تابعها بسیار سریعتر از توابع نمایی رشد میکنند و معمولاً برای مسائل بسیار پیچیده استفاده میشوند 💥. به عنوان مثال:
- مسئله مرتبسازی تمامی جایگشتها (Permutations) زمان O(n!)) دارد، زیرا همه جایگشتهای ممکن بررسی میشوند.
8. مقایسه رشد توابع
برای فهم بهتر رشد توابع، میتوان آنها را از نظر نرخ رشد مقایسه کرد:
O(1) < O(log n) < O(n) < O(n log n) < O(n^2) < O(n^3) < O(2^n) < O(n!)
در عمل، وقتی (n) (اندازه ورودی) بزرگ میشود، توابعی مانند O(2^n) و O(n!) رشد بسیار سریعی دارند و اغلب غیرعملی هستند 🚫. از سوی دیگر، توابعی مانند O(log n)و O(n)کارایی بسیار بالایی دارند ✅.
9. معنی عملی رشد توابع
- الگوریتمهایی با پیچیدگی زمانی پایینتر (مانند O(n)یا (O(log n برای مسائل با ورودیهای بزرگ بسیار مناسبتر هستند 🏃♂️.
- الگوریتمهای با پیچیدگی بالاتر (مانند (O(n^2 یا O(2^n)معمولاً برای مسائل کوچک یا در شرایط خاص به کار میروند 🛑.
در کل، فهم رشد توابع به ما کمک میکند تا الگوریتمهای مختلف را از نظر کارایی مقایسه کنیم و مناسبترین گزینه را برای حل مسائل مختلف انتخاب کنیم 🎯.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👍5
خانوم Khuyen Tran در صفحه توییترشون یه لایبرری جالب معرفی کردن که از طریق اون می تونید عملیات Pandas رو به راحتی و تنها با یک خط به صورت پارارل در همه پردازنده های موجود در سیستم اجرا کنید.
کتابخانه پاندارارل در گیت هاب
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
کتابخانه پاندارارل در گیت هاب
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👍7
Algorithms analysis_complexity.pdf
184.6 KB
تحلیل و محاسبه پیچیدگی زمانی چند الگوریتم معروف با استفاده از روشهای مختلف
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👌2
🚀 FlowTurbo:
به سوی تولید تصویر بلادرنگ مبتنی بر جریان با استفاده از پالایشگر سرعت (NeurIPS 2024)
این عنوان به یک روش جدید برای تولید تصاویر در زمان واقعی اشاره دارد که بر اساس جریانهای تصویر عمل میکند و از یک پالایشگر سرعت برای بهبود کیفیت استفاده میکند. در کنفرانس NeurIPS 2024 معرفی شده است.
Github: https://github.com/shiml20/flowturbo
📕 Paper: https://arxiv.org/abs/2409.18128v1
🤗 Dataset: https://paperswithcode.com/dataset/imagenet
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
به سوی تولید تصویر بلادرنگ مبتنی بر جریان با استفاده از پالایشگر سرعت (NeurIPS 2024)
این عنوان به یک روش جدید برای تولید تصاویر در زمان واقعی اشاره دارد که بر اساس جریانهای تصویر عمل میکند و از یک پالایشگر سرعت برای بهبود کیفیت استفاده میکند. در کنفرانس NeurIPS 2024 معرفی شده است.
git clone https://github.com/shiml20/FlowTurbo.git
cd FlowTurbo
Github: https://github.com/shiml20/flowturbo
📕 Paper: https://arxiv.org/abs/2409.18128v1
🤗 Dataset: https://paperswithcode.com/dataset/imagenet
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👍2
آرایهها 📊 یک ساختار دادهای هستند که دادهها را به صورت متوالی در حافظه ذخیره میکنند.
ویژگیها:
- 📏 اندازه ثابت: بعد از تعریف، تغییر نمیکند.
- 🚀 دسترسی سریع: با استفاده از اندیس، دسترسی به هر عنصر با زمان ثابت (O(1)) انجام میشود.
- 🧮 همگن بودن: همه عناصر از یک نوع داده هستند.
انواع:
1. آرایه یکبعدی: لیستی ساده از دادهها 📃
2. آرایه دوبعدی: شبیه جدول یا ماتریس 🧮
مزایا:
- 💡 کاربرد ساده و مناسب برای ذخیرهسازی دادههای ترتیبی.
معایب:
- 🚫 اندازه ثابت و عدم امکان تغییر پس از تعریف.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
ویژگیها:
- 📏 اندازه ثابت: بعد از تعریف، تغییر نمیکند.
- 🚀 دسترسی سریع: با استفاده از اندیس، دسترسی به هر عنصر با زمان ثابت (O(1)) انجام میشود.
- 🧮 همگن بودن: همه عناصر از یک نوع داده هستند.
انواع:
1. آرایه یکبعدی: لیستی ساده از دادهها 📃
2. آرایه دوبعدی: شبیه جدول یا ماتریس 🧮
مزایا:
- 💡 کاربرد ساده و مناسب برای ذخیرهسازی دادههای ترتیبی.
معایب:
- 🚫 اندازه ثابت و عدم امکان تغییر پس از تعریف.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👍2
Media is too big
VIEW IN TELEGRAM
متا (Meta) در حال پیشبرد یک فرمول موفقیتآمیز است که دستبندهای عصبی (neural wrist bands) را با عینکهای واقعیت افزوده نسل جدید (AR glasses) ترکیب کرده است. این فناوری به کاربر اجازه میدهد تا با استفاده از حرکات عصبی و بدون نیاز به لمس مستقیم، عینکها را کنترل کند.
نکته جالب اینجاست که در یک دنیای موازی، شاید تصور میشد که این ترکیب جدید توسط اپل عرضه شود، نه متا. اما در عوض، اپل محصول Vision Pro را ارائه کرده که با فناوری متفاوتی کار میکند و بیشتر روی واقعیت مجازی (VR) تمرکز دارد تا واقعیت افزوده (AR).
به طور خلاصه، متا با این ترکیب دستبندهای عصبی و عینکهای AR، در حال ارائه تکنولوژیای است که میتوانست انتظار رود اپل آن را به عنوان یک نوآوری جدید عرضه کند.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
نکته جالب اینجاست که در یک دنیای موازی، شاید تصور میشد که این ترکیب جدید توسط اپل عرضه شود، نه متا. اما در عوض، اپل محصول Vision Pro را ارائه کرده که با فناوری متفاوتی کار میکند و بیشتر روی واقعیت مجازی (VR) تمرکز دارد تا واقعیت افزوده (AR).
به طور خلاصه، متا با این ترکیب دستبندهای عصبی و عینکهای AR، در حال ارائه تکنولوژیای است که میتوانست انتظار رود اپل آن را به عنوان یک نوآوری جدید عرضه کند.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👍1👨💻1
قدرت لیستهای پیوندی تکسویه!
🔍 لیست پیوندی تکسویه چیست؟
یک لیست پیوندی تکسویه از گرههایی تشکیل شده که هر کدام شامل داده و اشارهگری به گره بعدی است. این ترتیب خطی امکان تخصیص پویا حافظه را فراهم میکند و درجها و حذفهای کارآمدی را امکانپذیر میسازد.
📊 چرا لیستهای پیوندی تکسویه مهم هستند؟
اندازه پویا: برخلاف آرایهها که اندازه ثابتی دارند، لیستهای پیوندی میتوانند بسته به نیاز رشد کرده یا کوچک شوند، و برای برنامههایی که اندازه داده در آنها متغیر است، ایدهآل هستند.
عملیات کارآمد: اضافه کردن یا حذف گرهها، به ویژه در ابتدای یا انتهای لیست، سریع و کارآمد است—در بسیاری از موارد یک عملیات O(1)!
🌟 اجزای کلیدی:
گره ابتدایی (Head): نقطه شروع لیست که برای پیمایش در دادهها بسیار مهم است.
داده و مرجع بعدی: هر گره دارای داده و یک مرجع به گره بعدی است که زنجیرهای از گرهها را تشکیل میدهد.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
🔍 لیست پیوندی تکسویه چیست؟
یک لیست پیوندی تکسویه از گرههایی تشکیل شده که هر کدام شامل داده و اشارهگری به گره بعدی است. این ترتیب خطی امکان تخصیص پویا حافظه را فراهم میکند و درجها و حذفهای کارآمدی را امکانپذیر میسازد.
📊 چرا لیستهای پیوندی تکسویه مهم هستند؟
اندازه پویا: برخلاف آرایهها که اندازه ثابتی دارند، لیستهای پیوندی میتوانند بسته به نیاز رشد کرده یا کوچک شوند، و برای برنامههایی که اندازه داده در آنها متغیر است، ایدهآل هستند.
عملیات کارآمد: اضافه کردن یا حذف گرهها، به ویژه در ابتدای یا انتهای لیست، سریع و کارآمد است—در بسیاری از موارد یک عملیات O(1)!
🌟 اجزای کلیدی:
گره ابتدایی (Head): نقطه شروع لیست که برای پیمایش در دادهها بسیار مهم است.
داده و مرجع بعدی: هر گره دارای داده و یک مرجع به گره بعدی است که زنجیرهای از گرهها را تشکیل میدهد.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👍3
🌟 پردازش زبان طبیعی (NLP) در زبان فارسی: چالشها و فرصتها 🌟
کار با پردازش زبان طبیعی (NLP) در زبان فارسی به دلیل برخی ویژگیهای خاص، با چالشهایی همراه است. این چالشها میتوانند به دلیل ساختار پیچیده زبان و محدودیت منابع داده به وجود بیایند. در ادامه به برخی از این چالشها اشاره میکنیم:
1️⃣ پیچیدگیهای ساختاری زبان فارسی: زبان فارسی دارای ویژگیهایی همچون صرف فعلها، ضمایر متصل، و نشانههایی مثل "ها" و "ی" است که پردازش جملات را پیچیدهتر میکند.
2️⃣ کمبود دادههای معتبر و بزرگ: در مقایسه با زبانهایی مانند انگلیسی، مجموعه دادههای بزرگ و آماده برای فارسی کمتر است و این مسئله دقت مدلهای NLP را کاهش میدهد.
3️⃣ متنهای غیررسمی در شبکههای اجتماعی: پیامهای شبکههای اجتماعی پر از اشتباهات املایی، اختصارات و کلمات محاورهای است که پردازش خودکار آنها را دشوار میسازد.
4️⃣ نبود ابزارهای استاندارد و پیشرفته: ابزارهای NLP برای زبانهای بزرگتر مثل انگلیسی توسعه یافتهاند و نسخههای فارسی آنها اغلب کمدقت یا ناکامل هستند.
5️⃣ چالش در جداسازی کلمات: نوشتار فارسی بهطور پیوسته است و فاصله بین کلمات همیشه مشخص نیست، که باعث دشواری در تشخیص دقیق کلمات میشود.
6️⃣ چندمعنایی و همریشه بودن کلمات: بسیاری از کلمات فارسی دارای معانی مختلف هستند و تشخیص معنای درست در جمله را پیچیده میکنند.
7️⃣ کمبود مدلهای زبانی تخصصی: مدلهای پیشآموزشدیده برای فارسی کم و معمولاً نیاز به تنظیم و آموزش دوباره دارند.
💡 هرچند که چالشها زیادند، اما پیشرفتهایی در این زمینه صورت گرفته و آینده روشنی برای پردازش زبان فارسی در حوزه NLP قابل تصور است!
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
کار با پردازش زبان طبیعی (NLP) در زبان فارسی به دلیل برخی ویژگیهای خاص، با چالشهایی همراه است. این چالشها میتوانند به دلیل ساختار پیچیده زبان و محدودیت منابع داده به وجود بیایند. در ادامه به برخی از این چالشها اشاره میکنیم:
1️⃣ پیچیدگیهای ساختاری زبان فارسی: زبان فارسی دارای ویژگیهایی همچون صرف فعلها، ضمایر متصل، و نشانههایی مثل "ها" و "ی" است که پردازش جملات را پیچیدهتر میکند.
2️⃣ کمبود دادههای معتبر و بزرگ: در مقایسه با زبانهایی مانند انگلیسی، مجموعه دادههای بزرگ و آماده برای فارسی کمتر است و این مسئله دقت مدلهای NLP را کاهش میدهد.
3️⃣ متنهای غیررسمی در شبکههای اجتماعی: پیامهای شبکههای اجتماعی پر از اشتباهات املایی، اختصارات و کلمات محاورهای است که پردازش خودکار آنها را دشوار میسازد.
4️⃣ نبود ابزارهای استاندارد و پیشرفته: ابزارهای NLP برای زبانهای بزرگتر مثل انگلیسی توسعه یافتهاند و نسخههای فارسی آنها اغلب کمدقت یا ناکامل هستند.
5️⃣ چالش در جداسازی کلمات: نوشتار فارسی بهطور پیوسته است و فاصله بین کلمات همیشه مشخص نیست، که باعث دشواری در تشخیص دقیق کلمات میشود.
6️⃣ چندمعنایی و همریشه بودن کلمات: بسیاری از کلمات فارسی دارای معانی مختلف هستند و تشخیص معنای درست در جمله را پیچیده میکنند.
7️⃣ کمبود مدلهای زبانی تخصصی: مدلهای پیشآموزشدیده برای فارسی کم و معمولاً نیاز به تنظیم و آموزش دوباره دارند.
💡 هرچند که چالشها زیادند، اما پیشرفتهایی در این زمینه صورت گرفته و آینده روشنی برای پردازش زبان فارسی در حوزه NLP قابل تصور است!
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
تشخیص شیء با یک تصویر
🔹 دانشگاه Delft به همراه Hensoldt Optronics روش جدیدی به نام OSSA معرفی کردهاند که یک روش تطبیق حوزه بدون نظارت برای تشخیص اشیاء است. این روش تنها از یک تصویر هدف بدون برچسب استفاده میکند تا سبک حوزه هدف را تخمین بزند. هدف این روش، کاهش نیاز به جمعآوری دادههای وسیع است. همچنین کد منبع آن منتشر شده است.
🎯 نکات کلیدی:
✅ تطبیق سبک یکشات بدون نظارت در سطح پیشرفته
✅ استفاده از یک تصویر برای گرفتن سبک یک مجموعه داده
✅ کاهش قابل توجه نیاز به دادههای گسترده
✅ پوشش سبکها در زمینههای مختلف مانند شرایط آبوهوایی
✅ تطبیق بین دنیای مصنوعی و واقعی، یا تصاویر بصری و مادون قرمز
Paper arxiv.org/pdf/2410.00900
Code github.com/RobinGerster7/OSSA
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
🔹 دانشگاه Delft به همراه Hensoldt Optronics روش جدیدی به نام OSSA معرفی کردهاند که یک روش تطبیق حوزه بدون نظارت برای تشخیص اشیاء است. این روش تنها از یک تصویر هدف بدون برچسب استفاده میکند تا سبک حوزه هدف را تخمین بزند. هدف این روش، کاهش نیاز به جمعآوری دادههای وسیع است. همچنین کد منبع آن منتشر شده است.
🎯 نکات کلیدی:
✅ تطبیق سبک یکشات بدون نظارت در سطح پیشرفته
✅ استفاده از یک تصویر برای گرفتن سبک یک مجموعه داده
✅ کاهش قابل توجه نیاز به دادههای گسترده
✅ پوشش سبکها در زمینههای مختلف مانند شرایط آبوهوایی
✅ تطبیق بین دنیای مصنوعی و واقعی، یا تصاویر بصری و مادون قرمز
Paper arxiv.org/pdf/2410.00900
Code github.com/RobinGerster7/OSSA
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👍6
قضیه آکرا-بازی یک روش قدرتمند برای تحلیل بازگشتیها در ساختمان دادهها و الگوریتمهاست. این قضیه به ما کمک میکند تا پیچیدگی زمانی الگوریتمهای بازگشتی را دقیقتر محاسبه کنیم، به ویژه زمانی که مسأله به بخشهای مساوی تقسیم میشود. در این توضیح، بازگشت به صورت تقسیم مسأله به دو بخش مساوی و حل هر بخش تعریف شده است. با استفاده از فرمول آکرا-بازی و تعیین پارامترهای مناسب، میتوان پیچیدگی کلی را بدست آورد. 🧠📊
Source : https://www.geeksforgeeks.org/akra-bazzi-method-for-finding-the-time-complexities/
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
Source : https://www.geeksforgeeks.org/akra-bazzi-method-for-finding-the-time-complexities/
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
🔥3👍2