وضعیتی که در آن بستهها بهطور مداوم در حال گردش بین روترها هستند و هیچگاه به مقصد نمیرسند.
درخت جستجوی دودویی (Binary Search Tree - BST) یکی از انواع درختهای دودویی است که در آن برای هر گره، تمامی مقادیر در زیردرخت سمت چپ آن کمتر از مقدار گره اصلی و تمامی مقادیر در زیردرخت سمت راست آن بیشتر از مقدار گره اصلی است. این ویژگی به درخت این امکان را میدهد که بهطور مؤثر جستجو، درج و حذف مقادیر را انجام دهد.
درخت جستجوی دودویی بهطور معمول برای ذخیرهسازی دادههایی استفاده میشود که نیاز به جستجوی سریع دارند. این درختها بهویژه در پیادهسازی ساختارهای دادهای مانند دیکشنریها و جداول هش (Hash Tables) مفید هستند. ویژگیهای اصلی درخت جستجوی دودویی شامل موارد زیر است:
در درخت جستجوی دودویی، سه عملیات اصلی وجود دارد که معمولاً روی آن انجام میشود:
در اینجا یک پیادهسازی ساده از درخت جستجوی دودویی در زبان Python آورده شده است:
class Node:
def __init__(self, key):
self.left = None
self.right = None
self.value = key class BST:
def __init__(self):
self.root = None
def insert(self, key):
if self.root is None:
self.root = Node(key)
else:
self._insert(self.root, key)
def _insert(self, root, key):
if key < root.value:
if root.left is None:
root.left = Node(key)
else:
self._insert(root.left, key)
else:
if root.right is None:
root.right = Node(key)
else:
self._insert(root.right, key)
def search(self, key):
return self._search(self.root, key)
def _search(self, root, key):
if root is None or root.value == key:
return root
if key < root.value:
return self._search(root.left, key)
return self._search(root.right, key) # استفاده از درخت جستجوی دودویی bst = BST() bst.insert(20) bst.insert(10) bst.insert(30) bst.insert(5) result = bst.search(10) if result:
print("Found:", result.value) # خروجی: Found: 10 else:
print("Not Found") در این مثال، یک کلاس Node برای گرههای درخت و یک کلاس BST برای خود درخت جستجوی دودویی ایجاد شده است. درخت بهطور بازگشتی ساخته میشود و عملیاتهای جستجو و درج بهصورت بازگشتی انجام میشود.
O(log n) انجام میشود، که باعث کارایی بالای این درخت در پردازش دادهها میشود.O(n) کاهش مییابد. برای جلوگیری از این مشکل، درختهای متوازن مانند AVL Tree و Red-Black Tree استفاده میشوند.برای حل مشکل عدم تعادل، میتوان از درختهای جستجوی دودویی متوازن استفاده کرد. در این نوع درختها، عملیاتهای درج، حذف و جستجو همواره در زمان O(log n) انجام میشود. دو نوع اصلی درخت جستجوی دودویی متوازن عبارتند از:
درختهای جستجوی دودویی متوازن بهویژه در الگوریتمهای جستجو، ذخیرهسازی دادهها و پردازش دادههای بزرگ بسیار مفید هستند.
برای اطلاعات بیشتر، میتوانید از سایت saeidsafaei.ir و اسلایدهای محمد سعید صفایی بهرهبرداری کنید.
در این مبحث، به معرفی انواع دستورالعملهای شرطی پرداخته میشود و در راستای آن، عملگرهای منطقی بهطور کامل مورد بررسی قرار میگیرند. همچنین، با مفاهیمی مانند بلوک دستورالعمل، ارزیابی میانبری و تله سقوط آشنا میشویم. در نهایت، انواع کلمات کلیدی در برنامهنویسی معرفی شده و کاربردهای آنها توضیح داده میشود. هدف این جلسه، تقویت درک شرطها و نحوه استفاده صحیح از آنها در نوشتن برنامههای کاربردی است.
وضعیتی که در آن بستهها بهطور مداوم در حال گردش بین روترها هستند و هیچگاه به مقصد نمیرسند.
خودروهای خودران به خودروهایی اطلاق میشود که میتوانند بدون دخالت انسان حرکت کنند و تصمیمات رانندگی را اتخاذ کنند.
فرآیندی که در آن دادهها از هر لایه دریافت شده و سرآیندها حذف میشود تا دادههای اصلی به مقصد برسند.
عملگر مساوی برای مقایسه دو مقدار استفاده میشود تا مشخص شود آیا آنها برابرند یا خیر. در برنامهنویسی از آن برای مقایسه و انتساب دادهها استفاده میشود.
ساختارهایی در برنامهنویسی شیگرا هستند که دادهها و متدهای مربوط به آنها را به یک واحد منطقی گروهبندی میکنند.
میزان صحت دادهها و تاریخچهای که نشان میدهد دادهها از کجا آمدهاند، چه تغییراتی بر آنها اعمال شده و چه کسانی آنها را تغییر دادهاند.
فرایند به هم پیوستن یا به هم رسیدن دو یا چند مولفه برای تبادل دادهها در شبکه.
پردازش زبان طبیعی (NLU) به توانایی سیستمهای کامپیوتری برای درک و تفسیر زبانهای انسانی بهطور صحیح و معنادار اشاره دارد.
اپلیکیشنهای بومی ابری به برنامههایی اطلاق میشود که به طور ویژه برای محیطهای ابری طراحی شدهاند.
سمانتیک به معنای بررسی معنای دستورات و کدها در یک زبان برنامهنویسی است. این بخش تعیین میکند که آیا کد نوشته شده به درستی به وظایف خود عمل میکند یا خیر.
توانایی یک سیستم در پاسخدهی به تغییرات مقیاس در بار کاری و افزایش ظرفیت به طور مؤثر.
عملگر مودولو برای بهدست آوردن باقیمانده یک تقسیم استفاده میشود. به عنوان مثال، 7 % 3 برابر با 1 است.
کانکتور مخصوص کابلهای Twisted Pair که برای اتصال به شبکههای اترنت مورد استفاده قرار میگیرد.
به هر جهش یا انتقال دادهها از یک دستگاه به دستگاه دیگر در شبکه گفته میشود.
پروتکلی برای ارتباطات شبکه که پایهگذار اینترنت و بسیاری از شبکههای محلی است.
بلاکچین 2.0 به نسخهای پیشرفته از بلاکچین گفته میشود که ویژگیهایی مانند قراردادهای هوشمند و مقیاسپذیری بهتر را ارائه میدهد.
مدت زمانی که طول میکشد تا یک بسته از مبدأ به مقصد برسد. این تأخیر میتواند انواع مختلفی مانند تأخیر پردازش، تأخیر انتقال و تأخیر انتشار داشته باشد.
ظرفیت حداکثر دادهای که میتواند از یک مسیر ارتباطی عبور کند، معمولاً بر حسب بیت بر ثانیه یا واحدهای مشابه اندازهگیری میشود.
پهنای باند در ارتباطات باسیم که معمولاً بالاتر و پایدارتر است.
مدل استاندارد شبکهای که ارتباطات سیستمهای مختلف را در 7 لایه مجزا تنظیم میکند. هر لایه وظایف خاص خود را دارد و با لایههای مجاور خود ارتباط برقرار میکند.
کد شیء به کدی اطلاق میشود که پس از ترجمه توسط کامپایلر از کد منبع به زبان ماشین تبدیل شده است. این کد آماده اجرا است.
یک زتابایت معادل 1024 اگزابایت است و برای ذخیرهسازی دادههای کلان در سطح جهانی استفاده میشود.
توابع ریاضی توابعی هستند که عملیاتهای ریاضی مانند جمع، تفریق، ضرب، تقسیم، ریشهگیری و لگاریتمگیری را انجام میدهند. این توابع معمولاً در کتابخانههای استاندارد مانند cmath در C++ موجود هستند.
قسمتی از کامپیوتر است که وظیفه پردازش دادهها را بر عهده دارد. این بخش معمولاً به عنوان مغز کامپیوتر شناخته میشود.
گره یک عنصر در گراف است که میتواند دادهای را ذخیره کند و با یالها به سایر گرهها متصل باشد.
کشف دادههای افزوده به فرآیند تجزیه و تحلیل و استخراج الگوهای جدید از دادههای موجود به کمک هوش مصنوعی گفته میشود.
الگوریتم مرتبسازی هپ یک الگوریتم مرتبسازی است که از ساختار دادهای هپ برای ترتیب دادن دادهها استفاده میکند.
شبکههای مجازیشده به شبکههایی اطلاق میشود که از فناوری مجازیسازی برای ایجاد و مدیریت منابع شبکه استفاده میکنند.
پایان به آخرین مرحله در الگوریتم گفته میشود که پس از آن هیچ پردازش یا محاسبات بیشتری انجام نمیشود.
الگوریتم مرتبسازی سریع یک الگوریتم تقسیم و غلبه است که عنصر مرجعی را انتخاب کرده و آرایه را به دو بخش مرتب تقسیم میکند.
شبکهبندی فرآیند اتصال چندین دستگاه به یکدیگر است تا اطلاعات بین آنها تبادل شود.
مهندسی تقویتشده توسط هوش مصنوعی به استفاده از الگوریتمهای هوش مصنوعی برای بهبود و تسهیل فرآیندهای مهندسی و طراحی اطلاق میشود.
تشخیص مبتنی بر هوش مصنوعی به استفاده از مدلهای هوش مصنوعی برای شناسایی و تحلیل مشکلات و بیماریها در دادهها و تصاویر پزشکی اطلاق میشود.
دروازههای منطقی دستگاههای الکترونیکی هستند که از آنها برای انجام عملیات منطقی مانند AND, OR, NOT استفاده میشود.
عملگرهای مقایسهای برای مقایسه دو مقدار و تعیین روابط آنها مانند بزرگتر از، کوچکتر از، مساوی استفاده میشود.