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

👨‍💻Admin👉 @Se_mohamad
Download Telegram
تصویر 👆🏻👆🏻به شکلی ساده و گویا رابطه‌ی بین کلاس‌های پیچیدگی در علوم کامپیوتر را نشان می‌دهد و فرض می‌کند که P!=NP است. در ادامه توضیح مختصری برای هر بخش ارائه می‌شود:

🔹 کلاس P: این کلاس شامل مسائلی است که می‌توان آن‌ها را با الگوریتم‌های قطعی و در زمان چندجمله‌ای (polynomial time) حل کرد. به عبارت دیگر، این مسائل برای کامپیوترها قابل حل هستند و زمان زیادی نیاز ندارند. این دسته از مسائل ساده‌تر هستند و الگوریتم‌های کارآمدی برای آن‌ها وجود دارد.
💡 مثال: مسئله‌ی "کوتاه‌ترین مسیر" که در آن می‌خواهیم کوتاه‌ترین مسیر بین دو نقطه را پیدا کنیم.

🔹 کلاس NP: این کلاس شامل مسائلی است که اگر جوابشان به ما داده شود، می‌توانیم در زمانی چندجمله‌ای (با استفاده از یک الگوریتم) آن را تأیید کنیم، اما پیدا کردن جواب خود مسئله ممکن است زمان زیادی ببرد. این بدان معناست که اگر جوابی داشته باشیم، تأیید آن آسان است؛ ولی یافتن جواب قطعی ممکن است زمان‌بر باشد.
💡 نکته: NP شامل P هم می‌شود؛ چراکه اگر بتوانیم مسئله‌ای را سریع حل کنیم، قطعاً می‌توانیم جواب آن را هم سریع تأیید کنیم.

🔸 کلاس NP-کامل (NP-Complete): این دسته از مسائل، پیچیده‌ترین مسائل در NP هستند. این مسائل هم در NP هستند و هم ویژگی خاصی دارند که اگر بتوانیم یک مسئله NP-کامل را در زمانی چندجمله‌ای حل کنیم، می‌توانیم تمام مسائل NP را نیز در زمانی چندجمله‌ای حل کنیم. این مسائل برای پژوهشگران و متخصصان علوم کامپیوتر چالش‌برانگیز هستند.
💡 مثال: مسئله‌ی "پوشش رأس" (Vertex Cover) که یک مسئله‌ی کلاسیک NP-کامل است و پیدا کردن راه‌حل آن به‌ویژه برای ورودی‌های بزرگ دشوار است.

🔸 کلاس NP-سخت (NP-Hard): این کلاس شامل مسائلی است که سختی آن‌ها حداقل به اندازه‌ی مسائل NP-کامل است، اما لزوماً در NP نیستند. به این معنی که حتی ممکن است نتوانیم به راحتی جواب آن‌ها را تأیید کنیم. این دسته شامل مسائلی مانند "مشکل توقف تورینگ" (Turing Halting Problem) است که در آن حتی تأیید کردن جواب نیز دشوار و در برخی موارد غیرممکن است.
💡 مثال: "مشکل توقف تورینگ" که یکی از پیچیده‌ترین مسائل محاسباتی است.

🔍 جمع‌بندی: این نمودار به خوبی رابطه و تفاوت بین این کلاس‌ها را نشان می‌دهد و به ما کمک می‌کند تا بدانیم هر کدام از این دسته‌ها شامل چه نوع مسائلی می‌شوند و چرا بررسی هرکدام از آن‌ها اهمیت دارد.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
Open Contextual RAG 🌐

نحوه‌ی عملکرد

بازیابی اطلاعات:

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

متن‌های بازیابی شده به مدل زبانی وارد می‌شوند.
مدل با تحلیل این متن‌ها، پاسخ بهینه‌ای تولید می‌کند.
تولید پاسخ:

خروجی نهایی شامل یک متن دقیق و مرتبط با درخواست کاربر است.. ادغام با مدل تولیدی: متن بازیابی شده به مدل زبانی داده می‌شود تا پاسخ بهینه‌ای تولید کند.
3. تولید پاسخ: خروجی نهایی به سؤال کاربر پاسخ دقیق‌تری می‌دهد.

کاربردها :
- پاسخ‌دهی به‌روز در چت‌بات‌ها
- دسترس‌پذیری اطلاعات تخصصی در جستجوهای علمی و پزشکی
- پشتیبانی از زبان‌های مختلف


برای اطلاعات بیشتر در مورد کارکرد بازیابی اطلاعات، لطفاً به لینک زیر مراجعه کنید:
https://github.com/MohammadHossini/IR-Project

Contextual RAG:https://github.com/togethercomputer/together-cookbook/blob/main/Open_Contextual_RAG.ipynb

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
در اینجا نکات مهم و کاربردی درباره کد هافمن همراه با استیکرهای مناسب ارائه شده است:


💡 ۱. فشرده‌سازی بهینه بدون اتلاف
کد هافمن یک روش فشرده‌سازی بدون اتلاف است، به این معنا که تمام اطلاعات اصلی حفظ می‌شود و در عین حال حجم داده‌ها کاهش می‌یابد. کاراکترهای پرتکرار، کدهای کوتاه‌تر می‌گیرند و کاراکترهای نادر، کدهای طولانی‌تر**؛ این باعث کاهش حجم کلی فایل می‌شود.

🌳 ۲. ساخت درخت هافمن
برای ساخت درخت هافمن، هر کاراکتر بر اساس **فراوانی
آن به یک گره تبدیل می‌شود. سپس، دو گره با کمترین فراوانی انتخاب شده و با هم ترکیب می‌شوند. این فرایند ادامه دارد تا به یک درخت دودویی نهایی برسیم. درخت هافمن نقش مهمی در تولید کدها دارد، چرا که بر اساس مسیر درخت**، کد هر کاراکتر تعیین می‌شود.

🔑 ۳. کدهای پیشوندی و بدون ابهام
یکی از ویژگی‌های مهم کد هافمن **پیشوندی بودن
آن است؛ یعنی هیچ کدی پیشوند کد دیگری نیست. این ویژگی باعث می‌شود که دیکودینگ ساده و بدون ابهام باشد. برای مثال، اگر کد یک کاراکتر "۱۰۱" باشد، هیچ کد دیگری نمی‌تواند با "۱۰۱" شروع شود و همین امر باعث دقت در دیکود کردن می‌شود.

🚀 ۴. پیچیدگی و کارایی زمانی
پیچیدگی ساخت درخت هافمن برابر با ( O(n log n) ) است که n تعداد کاراکترهای منحصربه‌فرد است. این بهینه‌سازی در ساخت درخت باعث می‌شود که کد هافمن در مقایسه با روش‌های دیگر فشرده‌سازی سریع‌تر و کارآمدتر باشد. پس از ساخت درخت، دیکودینگ و کدگذاری هر کاراکتر به صورت خطی انجام می‌شود.

🛠 ۵. کاربردهای گسترده
کد هافمن در فشرده‌سازی فایل‌ها (مانند ZIP و GZIP)، تصاویر (مانند JPEG) و حتی در انتقال داده‌ها در شبکه‌ها برای کاهش مصرف پهنای باند کاربرد دارد. در کل، این روش به دلیل سادگی و اثربخشی خود در بسیاری از زمینه‌ها همچنان محبوب و کاربردی است.

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
روی مدل‌های زبان تصویری (Vision Language Models یا VLMs) حساب کنید.

با انتشار مدل‌های Llama 3.2 و ColQwen2، مدل‌های چندوجهی (multimodal) توجه زیادی به خود جلب کرده‌اند.

در واقع VLMها مدل‌های چندوجهی هستند که می‌توانند با ورودی‌های تصویری و متنی کار کنند:

ورودی: تصویر و متن
خروجی: متن

این مدل‌ها کاربردهای متنوعی دارند، از جمله پاسخ به پرسش‌های بصری یا درک اسناد (همان‌طور که در ColQwen2 دیده می‌شود).

چگونه این مدل‌ها کار می‌کنند؟

چالش اصلی در VLMها، یکپارچه‌سازی نمایشی‌های تصویر و متن است.

برای این منظور، معماری معمول VLM شامل اجزای زیر است:

- انکودر تصویر (مانند CLIP، SigLIP)
- پروژکتور تعبیه‌ای (embedding projector) برای هماهنگی نمایشی‌های تصویر و متن
- دیکودر متن (مانند Vicuna، Gemma)

More : https://huggingface.co/blog/vlms

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

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

🔹 کاربردهای افزونه برای محققین، دانشجویان و همه‌ی کسانی که به پاسخ‌های فوری نیاز دارند، فوق‌العاده است. همچنین، با امکان ادغام با دیگر ابزارهای کروم، تجربه‌ای ساده و یکپارچه برای شما فراهم می‌کند. 📑

برای نصب، کافی است به لینک زیر مراجعه کنید :
https://chromewebstore.google.com/detail/chatgpt-search/ejcfepkfckglbgocfkanmcdngdijcgld

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
هفته رایگان دیتاکمپ 2024 از 14 تا 20 آبان در دسترس هست.

سایت DataCamp هر سال یک هفته دسترسی به کل سایتش از جمله +500 دوره آموزشی‌شو رایگان می‌کنه و شما بدون نیاز به حتی داشتن کارت اعتباری برای ثبت‌نام اولیه می‌تونید توی سایت ثبت‌نام کنید.
ثبت‌نام از 4 نوامبر (14 آبان) در دسترس قرار می‌گیره

لینک ثبت‌نام:
https://www.datacamp.com/

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
LLM.pdf
8.4 MB
ساخت مدل‌های زبان بزرگ (کلاس درس CS229 دانشگاه استنفورد)
این کلاس به بررسی مختصر فرایند ساخت مدل‌های زبان بزرگ مشابه ChatGPT می‌پردازد.

به‌طور مشخص، این کلاس شامل موارد زیر است:

- Pretraining
- Post-training
در هر قسمت، به موارد زیر پرداخته می‌شود:

- روش‌های رایج در جمع‌آوری داده‌ها،
- الگوریتم‌ها و
- روش‌های ارزیابی

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
🔍 تحقیقات جدید در زمینه مدل‌های چندمدلی LLM

در زمینه‌ی مدل‌های LLM چندمدلی، تحقیقات جدیدی صورت گرفته است، از جمله مدل‌های دیداری Llama 3.2 که استراتژی‌های معماری متنوعی را برای یکپارچه‌سازی انواع مختلف داده‌ها مانند متن و تصویر به کار می‌برند.

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

از سوی دیگر، روش‌های توجه متقابل (مانند آنچه در Llama 3.2 استفاده شده) شامل رمزگذارهای جداگانه برای حالت‌های مختلف با یک لایه توجه متقابل است که به این رمزگذارها اجازه می‌دهد تا با هم تعامل داشته باشند.

📄 مقاله‌ی جدید به توضیح نحوه‌ی عملکرد این انواع مختلف LLM چندمدلی می‌پردازد. علاوه بر این، به بررسی و خلاصه‌سازی حدود دوازده مقاله و مدل چندمدلی اخیر که در هفته‌های گذشته منتشر شده‌اند، را مورد بررسی قرار می دهد تا رویکردهای آن‌ها را مقایسه کنم.

📰 برای اطلاعات بیشتر، حتماً این مقاله رو مطالعه کنید:
https://www.linkedin.com/pulse/understanding-multimodal-llms-sebastian-raschka-phd-t7h5c/

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

بخش Data Structures در HackerRank شامل تمرین‌های متنوعی از جمله آرایه‌ها، لیست‌های پیوندی، درخت‌ها، پشته‌ها، صف‌ها و گراف‌ها است. این تمرین‌ها به کاربران کمک می‌کنند تا با مفاهیم بنیادی ساختار داده‌ها آشنا شوند و با حل مسائل عملی، دانش خود را در این زمینه تقویت کنند.

به علاوه، HackerRank فرصتی برای شرکت در رقابت‌های برنامه‌نویسی و یادگیری از جامعه‌ای بزرگ از برنامه‌نویسان فراهم می‌کند.

https://www.hackerrank.com/domains/data-structures

#الگوریتم
📣👨‍💻 @AlgorithmDesign_DataStructuer
This media is not supported in your browser
VIEW IN TELEGRAM
اگر هنوز با بخش رمزگذار (Encoder) ترانسفورمر آشنا نیستید، در این لینک، توضیحات گام‌به‌گام و دقیقی از این بخش را پیدا خواهید کرد. با دنبال کردن این راهنما، می‌توانید یک "مدل ذهنی" شفاف از ترانسفورمر بسازید و اصول و عملکرد رمزگذار را به سادگی درک کنید.

https://towardsdatascience.com/drawing-the-transformer-network-from-scratch-part-1-9269ed9a2c5e

#هوش_مصنوعی
📣👨‍💻 @AlgorithmDesign_DataStructuer
سلام به همگی

قصد دارم جزوه‌های دروس کاربردی مثل هوش مصنوعی، ساختمان داده، طراحی الگوریتم و… رو از دانشگاه‌های مختلف جمع‌آوری کنم و در کانال به اشتراک بگذارم تا همگی استفاده کنیم. اگر جزوه مفیدی دارید، ممنون میشم از هر دانشگاهی که هستید به آی‌دی زیر ارسال کنید. 🙏📘

🆔: @Se_mohamad
تشکر از همراهی‌تون! 😊
📚میان‌ترم و پایان ترم ساختمان داده‌ها و الگوریتم
👨‍🏫استاد سید مجید رضویان

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