درخت B
درخت B یا B-tree یک ساختمان دادهآموزش ساختمان داده و الگوریتمهر ساختمان داده یک نوع فرمت ذخیرهسازی و مدیریت دادهها در کامپیوتر است، که امکان دسترسی و اصلاح کارآمد آن دادهها را برای یکسری از الگوریتمها و کاربردها فراهم میکند، در این صفحه به بررسی و آموزش ساختمان داده و الگوریتم پرداخته شده است درخت جستجوی باینری است که برای عملیات جستجو و حذف سریع بهینه شده است. در پایگاههای داده، سیستمهای فایل و سایر برنامهها که در آن دادههای گسترده باید به طور مؤثر جستجو شوند، استفاده میشود. B-treeها میتوانند کلیدها و مقادیر زیادی را در یک فضای فشرده ذخیره کنند و از عملیاتهای درج و حذف سریع پشتیبانی کنند. در این مقاله به بررسی این نوع درختان میپردازیم.
ویژگیهای درخت B
درخت B از مرتبه n شامل تمام ویژگیهای درخت است، علاوه بر این شامل خواص زیر نیز میباشد:
- برای هر گره x، کلیدها به ترتیب افزایشی ذخیره میشوند.
- هر گره یک مقدار بولی دارد که اگر x یک برگ باشد این مقدار True است.
- اگر n مرتبه درخت باشد، هر گره داخلی میتواند حداکثر دارای n - 1 کلید به همراه یک اشاره گراشاره گر چیست — اشاره گرها در برنامه نویسیاین صفحه عالی توضیح داده اشاره گر چیست و نحوه تعریف اشاره گرها و همین طور اشاره گرها در برنامه نویسی را بررسی کرده سپس انواع اشاره گرها و کاربرد اشاره گرها را گفته به هر فرزند باشد.
- هر گره به جز ریشه میتواند حداکثر n فرزند و حداقل n/2 فرزند داشته باشد.
- همه برگها عمق یکسانی دارند (یعنی ارتفاع درخت).
- ریشه حداقل دو فرزند دارد و دارای حداقل 1 کلید است.
- اگر n ≥ 1، آنگاه برای هر درخت B از مرتبه n، با ارتفاع h و حداقل درجه t ≥ 2، h ≥ logt (n+1)/2.
عملیاتهای درخت B
عملیات جستجو در درخت B
جستجو در درختان B شبیه به جستجوی درخت جستجوی باینری است؛ به عنوان مثال، اگر عنصر 49 را در B Tree زیر جستجو کنیم، روند چیزی شبیه به زیر خواهد بود:
- عنصر 49 را با گره ریشه 78 مقایسه کنید. چون 49 < 78 است، به زیر درخت سمت چپ آن بروید.
- از آنجایی که 40 < 49 < 56، از زیر درخت 40 به سمت راست عبور کنید.
- 49 > 45، به سمت راست حرکت کنید. عنصر 49 را با 49 مقایسه کنید.
- عنصر مورد نظر پیدا شد، آن را برمیگردانیم.
عملیات درج در درخت B
درج در سطح گره برگ انجام میشود. برای درج یک آیتم در B Tree باید الگوریتمالگوریتم چیست به زبان ساده و با مثال های فراواندر این مقاله به زبان بسیار ساده و با مثال های متعدد توضیح داده شده که الگوریتم چیست و چه کاربردهایی دارد زیر را دنبال کنید:
- درخت B را پیمایش کنید تا گره برگ مناسب برای درج گره را بیابید.
- اگر گره برگ کمتر از m - 1 کلید دارد، عنصر را به ترتیب افزایشی درج کنید.
- در غیر این صورت، اگر گره برگ حاوی m - 1 کلید است، مراحل زیر را دنبال کنید.
- عنصر جدید را به ترتیب افزایشی عناصر درج کنید.
- گره را از وسط به دو گره تقسیم کنید.
- عنصر میانه را به سمت گره والد خود انتقال دهید.
- اگر گره والد دارای تعداد m - 1 کلید است، آن را با دنبال کردن مراحل مشابه تقسیم کنید.
برای مثال فرض کنید میخواهید عنصر 8 را در درخت B با مرتبه 5 زیر درج کنید:
8 در سمت راست 5 درج می شود، بنابراین 8 را درج کنید.
گره جدید، اکنون حاوی 5 کلید است که بزرگتر از حد مجاز است (5 - 1 = 4) است بنابراین گره را از عنصر میانی یعنی 8 جدا کنید و آن را به سمت گره والد خود که به شکل زیر نشان داده شده است، منتقل کنید:
درخت B نهایی به همین شکل خواهد بود.
عملیات حذف از درخت B
حذف نیز در گرههای برگ انجام میشود. گرهای که باید حذف شود میتواند یک گره برگ یا یک گره داخلی باشد. برای حذف یک گره از درخت B، الگوریتم زیر باید دنبال شود:
- محل گره برگ را پیدا کنید.
- اگر بیش از m/2 کلید در گره برگ وجود دارد، کلید مورد نظر را از گره حذف کنید.
- اگر گره برگ کمتر از m/2 کلید دارد ، با گرفتن عنصر از سمت راست یا چپ، کلیدها را تکمیل کنید.
- اگر گره سمت چپ حاوی بیش از m/2 عناصر است، بزرگترین عنصر آن را به سمت والدش منتقل کنید و عنصر وسط را به سمت پایین به سمت گرهای که کلیدش حذف شده است، ببرید.
- اگر گره سمت راست حاوی بیش از m/2 عناصر است، کوچکترین عنصر آن را به سمت والد منتقل کنید و عنصر وسط را به سمت پایین به سمت گرهای که کلیدش حذف شده است ببرید.
- اگر هیچ یک از گرههای کناری بیش از m/2 عنصر ندارند، با پیوند دادن دو گره برگ و عنصر میانی گره والد، یک گره برگ جدید ایجاد کنید.
- اگر گرههای والد کمتر از m/2 است، فرآیند بالا را برای والد نیز اعمال کنید.
اگر گرهای که باید حذف شود، یک گره داخلی است، آن را با گره قبلی یا بعدی اش در پیمایش Inorder، جایگزین کنید. از آنجایی که گره قبلی یا بعدی همیشه در گره برگ خواهد بود، فرآیند مشابه با حذف گره از گره برگ خواهد بود.
برای مثال فرض کنید میخواهید گره 10 را از درخت B مرتبه 5 که در شکل زیر نشان داده شده است حذف کنید:
10 در فرزند سمت راست عنصر 8 وجود دارد، آن را حذف کنید.
در حال حاضر، 23 تنها عنصر باقی مانده در گره است، و از حداقل تعداد عناصری که باید در درخت B درجه 5 وجود داشته باشد، یعنی 2 کمتر است. عناصر موجود در زیردرخت چپ و راست آن نیز کافی نیستند بنابراین آن را با گرههای چپ و راست و عنصر میانی والد، یعنی 8 ادغام کنید.
درخت B نهایی به صورت زیر است:
پیچیدگی زمانی عملیاتهای درخت B
پیچیدگی زمانیپیچیدگی زمانی الگوریتم چیست؟ معرفی نماد های مجانبیاین صفحه عالی به معرفی پیچیدگی زمانی الگوریتم پرداخته، همچنین انواع نماد های مجانبی و پیچیدگی زمانی های برخی از الگوریتم های مرتب سازی و جستجو را توضیح داده درخت B برای عملیاتهای جستجو، درج و حذف از مرتبه Θ(log n) است.
پیادهسازی درخت B
در ادامه به پیاده سازی درخت B در زبان های برنامه نویسیزبان های برنامه نویسی چیست؟این مقاله عالی توضیح داده که زبان های برنامه نویسی چیست؟ و انواع زبان های برنامه نویسی و بهترین زبان برنامه نویسی برای شروع و پردرآمدترین آنها را معرفی کرده پایتونزبان برنامه نویسی پایتون چیست؟ – نحوه شروع و دلایل محبوبیتزبان برنامه نویسی پایتون (Python) چیست؟ این مقاله عالی به بررسی دلایل محبوبیت پایتون، موارد استفاده از پایتون و نحوه شروع به برنامه نویسی پایتون پرداخته و سی پلاس پلاسبرنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده میپردازیم:
Python
# Searching a key on a B-tree in Python
# Create a node
class BTreeNode:
def __init__(self, leaf=False):
self.leaf = leaf
self.keys = []
self.child = []
# Tree
class BTree:
def __init__(self, t):
self.root = BTreeNode(True)
self.t = t
# Insert node
def insert(self, k):
root = self.root
if len(root.keys) == (2 * self.t) - 1:
temp = BTreeNode()
self.root = temp
temp.child.insert(0, root)
self.split_child(temp, 0)
self.insert_non_full(temp, k)
else:
self.insert_non_full(root, k)
# Insert nonfull
def insert_non_full(self, x, k):
i = len(x.keys) - 1
if x.leaf:
x.keys.append((None, None))
while i >= 0 and k[0] < x.keys[i][0]:
x.keys[i + 1] = x.keys[i]
i -= 1
x.keys[i + 1] = k
else:
while i >= 0 and k[0] < x.keys[i][0]:
i -= 1
i += 1
if len(x.child[i].keys) == (2 * self.t) - 1:
self.split_child(x, i)
if k[0] > x.keys[i][0]:
i += 1
self.insert_non_full(x.child[i], k)
# Split the child
def split_child(self, x, i):
t = self.t
y = x.child[i]
z = BTreeNode(y.leaf)
x.child.insert(i + 1, z)
x.keys.insert(i, y.keys[t - 1])
z.keys = y.keys[t : (2 * t) - 1]
y.keys = y.keys[0 : t - 1]
if not y.leaf:
z.child = y.child[t : 2 * t]
y.child = y.child[0 : t - 1]
# Print the tree
def print_tree(self, x, l=0):
print("Level ", l, " ", len(x.keys), end=":")
for i in x.keys:
print(i, end=" ")
print()
l += 1
if len(x.child) > 0:
for i in x.child:
self.print_tree(i, l)
# Search key in the tree
def search_key(self, k, x=None):
if x is not None:
i = 0
while i < len(x.keys) and k > x.keys[i][0]:
i += 1
if i < len(x.keys) and k == x.keys[i][0]:
return (x, i)
elif x.leaf:
return None
else:
return self.search_key(k, x.child[i])
else:
return self.search_key(k, self.root)
def main():
B = BTree(3)
for i in range(10):
B.insert((i, 2 * i))
B.print_tree(B.root)
if B.search_key(8) is not None:
print("\nFound")
else:
print("\nNot Found")
if __name__ == "__main__":
main()
C++
// Searching a key on a B-tree in C++
#include <iostream>
using namespace std;
class TreeNode
{
int *keys;
int t;
TreeNode **C;
int n;
bool leaf;
public:
TreeNode(int temp, bool bool_leaf);
void insertNonFull(int k);
void splitChild(int i, TreeNode *y);
void traverse();
TreeNode *search(int k);
friend class BTree;
};
class BTree
{
TreeNode *root;
int t;
public:
BTree(int temp)
{
root = NULL;
t = temp;
}
void traverse()
{
if (root != NULL)
root->traverse();
}
TreeNode *search(int k)
{
return (root == NULL) ? NULL : root->search(k);
}
void insert(int k);
};
TreeNode::TreeNode(int t1, bool leaf1)
{
t = t1;
leaf = leaf1;
keys = new int[2 * t - 1];
C = new TreeNode *[2 * t];
n = 0;
}
void TreeNode::traverse()
{
int i;
for (i = 0; i < n; i++)
{
if (leaf == false)
C[i]->traverse();
cout << " " << keys[i];
}
if (leaf == false)
C[i]->traverse();
}
TreeNode *TreeNode::search(int k)
{
int i = 0;
while (i < n && k > keys[i])
i++;
if (keys[i] == k)
return this;
if (leaf == true)
return NULL;
return C[i]->search(k);
}
void BTree::insert(int k)
{
if (root == NULL)
{
root = new TreeNode(t, true);
root->keys[0] = k;
root->n = 1;
}
else
{
if (root->n == 2 * t - 1)
{
TreeNode *s = new TreeNode(t, false);
s->C[0] = root;
s->splitChild(0, root);
int i = 0;
if (s->keys[0] < k)
i++;
s->C[i]->insertNonFull(k);
root = s;
}
else
root->insertNonFull(k);
}
}
void TreeNode::insertNonFull(int k)
{
int i = n - 1;
if (leaf == true)
{
while (i >= 0 && keys[i] > k)
{
keys[i + 1] = keys[i];
i--;
}
keys[i + 1] = k;
n = n + 1;
}
else
{
while (i >= 0 && keys[i] > k)
i--;
if (C[i + 1]->n == 2 * t - 1)
{
splitChild(i + 1, C[i + 1]);
if (keys[i + 1] < k)
i++;
}
C[i + 1]->insertNonFull(k);
}
}
void TreeNode::splitChild(int i, TreeNode *y)
{
TreeNode *z = new TreeNode(y->t, y->leaf);
z->n = t - 1;
for (int j = 0; j < t - 1; j++)
z->keys[j] = y->keys[j + t];
if (y->leaf == false)
{
for (int j = 0; j < t; j++)
z->C[j] = y->C[j + t];
}
y->n = t - 1;
for (int j = n; j >= i + 1; j--)
C[j + 1] = C[j];
C[i + 1] = z;
for (int j = n - 1; j >= i; j--)
keys[j + 1] = keys[j];
keys[i] = y->keys[t - 1];
n = n + 1;
}
int main()
{
BTree t(3);
t.insert(8);
t.insert(9);
t.insert(10);
t.insert(11);
t.insert(15);
t.insert(16);
t.insert(17);
t.insert(18);
t.insert(20);
t.insert(23);
cout << "The B-tree is: ";
t.traverse();
int k = 10;
(t.search(k) != NULL) ? cout << endl
<< k << " is found"
: cout << endl
<< k << " is not Found";
k = 2;
(t.search(k) != NULL) ? cout << endl
<< k << " is found"
: cout << endl
<< k << " is not Found\n";
}
مقایسه با درخت B+
برجستهترین نقاط مقایسه بین B-tree و B+tree شامل موارد زیر است:
- اشاره گر: تمام گرههای داخلی و برگ در درخت B دارای اشارهگر داده هستند. در B+tree، فقط گرههای برگ دارای اشارهگر داده هستند.
- جستجو: در B-tree از آنجایی که همه کلیدها در برگ موجود نیستند، جستجو اغلب زمان بیشتری میبرد. در B+tree، همه کلیدها در گرههای برگ قرار دارند. از این رو جستجو سریعتر و دقیقتر است.
- کلیدهای تکراری: در درخت B، هیچ کلید تکراری در درخت نگهداری نمیشود. در B+tree، کلیدهای تکراری میتوانند نگه داشته شوند و همه گرهها در برگ قرار دارند.
- درج: در B-tree ، درج زمان بیشتری میبرد و گاهی اوقات قابل پیشبینی نیست. در B+tree، درج سریعتر است و نتایج همیشه یکسان است.
- حذف: در درخت B، حذف گره داخلی بسیار پیچیده است و درخت باید دستخوش تغییرات زیادی شود. در B+tree، حذف هر گره آسان است زیرا همه گرهها در برگ پیدا میشوند.
- گره های برگ: گرههای برگ به صورت ساختمان داده لیست پیوندی در درخت B ذخیره نمیشوند. در B+tree، گره های برگ به صورت لیست پیوندیلیست پیوندی چیست؟ آموزش لیست پیوندی ساده، دو طرفه و حلقویلیست پیوندی چیست؟ این صفحه عالی به آموزش لیست پیوندی ساده، دو طرفه و حلقوی با مثال پرداخته و پیاده سازی و عملیات مهم و کاربردهای لیست پیوندی را گفته است ذخیره میشوند.
- دسترسی: در درخت B، دسترسی متوالی به گرها غیرممکن است. در B+tree، دسترسی متوالی، درست مانند یک لیست پیوندی، امکانپذیر است.
- ارتفاع: ارتفاع در B-tree برای تعداد خاصی از گرهها بزرگتر است. ارتفاع B+tree برای همان تعداد گره از درخت B کمتر است.
- کاربرد: B-Trees در پایگاه دادهپایگاه داده چیست؟ – انواع، مفاهیم و کاربردهاپایگاه داده چیست؟ این مقاله به بررسی این موضوع و همچنین انواع پایگاه داده، کاربردهای پایگاه داده، محبوب ترین پایگاه های داده و اجزای اصلی پایگاه داده پرداخته و موتورهای جستجو استفاده میشود. درختان B+ در شاخصسازی چندسطحی در پایگاه داده استفاده میشوند.
- تعداد گره ها: در درخت B تعداد گرهها در هر سطح میانی l، برابر 2l است. در B+tree، هر گره واسطه میتواند n/2 تا n فرزند داشته باشد.
کاربردهای درخت B
از کاربردهای درخت B میتوان به موارد زیر اشاره کرد:
- پایگاه های داده و سیستمهای مدیریت فایل
- برای ذخیره بلوکهای داده (رسانههای ذخیرهسازی ثانویه)
- شاخصسازی چندسطحی
جمعبندی
B-tree یک درخت جستجوی خود متعادل کننده است که در آن هر گره میتواند بیش از یک کلید داشته باشد و بیش از دو فرزند داشته باشد. این درخت، یک شکل تعمیم یافته از درخت جستجوی دودویی است. در این مقاله به شرح این نوع درخت پرداختیم و همچنین عملیاتهای اساسی آن را بررسی کردیم و با کاربردها و پیادهسازی آن آشنا شدیم.
درخت B چیست؟
درخت B دادهها را به گونهای ذخیره میکند که هر گره حاوی کلیدها به ترتیب صعودی باشد. هر یک از این کلیدها دو مرجع به دو گره فرزند دیگر دارند. کلیدهای گره فرزند سمت چپ کمتر از کلید فعلی هستند و کلیدهای گره فرزند سمت راست بیشتر از کلید فعلی هستند.
مزیت اصلی استفاده از B-Trees چیست؟
مزیت استفاده از این نوع درخت شامل موارد زیر است:
کلیدها را به ترتیب مرتب شده برای پیمایش متوالی نگه میدارد.
از یک شاخص سلسله مراتبی برای به حداقل رساندن تعداد خواندن دیسک استفاده میکند.
از بلوکهای نیمه کامل برای سرعت بخشیدن به درج و حذف استفاده میکند.
شاخص را با یک الگوریتم بازگشتی متعادل نگه میدارد.
پیچیدگی زمانی B-tree چقدر است؟
اگر n را تعداد کل عناصر یک درخت B در نظر بگیریم، پیچیدگی زمانی برای هر عملیات رایج، یعنی جستجو، درج و حذف، O(log n) خواهد بود.
درخت B بهتر است یا درخت B+؟
در B-tree، جستجو ناکارآمد است زیرا رکوردها در برگ یا گرههای داخلی ذخیره میشوند. در درخت B+، جستجو بسیار کارآمد یا سریعتر است زیرا تمام رکوردها در گرههای برگ ذخیره میشوند.
مزیت B-tree نسبت به درخت AVL چیست؟
AVL خود متعادل کننده است و تضمین میکند که همه عملیاتها در حالت متوسط و بدترین حالت O(log n) هستند. علاوه بر این، B-tree با اطمینان از پر بودن گره های داخلی حداقل ضایعات را به حداقل میرساند. یک B-tree میتواند تعداد دلخواه درج و حذف را مدیریت کند.
درخت B+
درخت B+ شکل پیشرفتهای از درخت خود متعادل کننده است که در آن تمام مقادیر در سطح برگ قرار دارند. در این مقاله به بررسی این نوع درخت میپردازیم.
ویژگیهای درخت B+
یک مفهوم مهم که باید قبل از یادگیری درخت B+ درک شود، شاخصسازی چندسطحی است. در شاخصسازی چندسطحی، شاخصها مانند شکل زیر ایجاد میشوند. این کار، دسترسی به دادهها را آسانتر و سریعتر میکند.
ویژگیهای درخت B+ شامل موارد زیر است:
- همه برگها در یک سطح هستند.
- ریشه حداقل دو فرزند دارد.
- هر گره به جز ریشه میتواند حداکثر m فرزند و حداقل m/2 فرزند داشته باشد (m مرتبه درخت B+ را مشخص میکند).
- هر گره میتواند حداکثر دارای m - 1 کلید و حداقل ⌈m/2⌉ - 1 کلید باشد.
عملیاتهای درخت B+
عملیات درج
مراحل عملیات درج در درخت B+ بهصورت زیر است:
- گره جدید را به عنوان یک گره برگ وارد کنید.
- اگر برگ فضای لازم را ندارد، گره را تقسیم کرده و گره میانی را در گره شاخص بعدی کپی کنید.
- اگر گره شاخص فضای لازم را ندارد، گره را تقسیم کرده و عنصر میانی را در صفحه شاخص بعدی کپی کنید.
فرض کنید میخواهیم مقدار 195 را در درخت B+ از مرتبه 5 که در شکل زیر نشان داده شده است وارد کنیم.
195 بعد از 190 در زیر درخت سمت راست 120 درج می شود. آن را در این مکان درج میکنیم.
گره سمت راست 120 حاوی بیش از حداکثر تعداد عناصر یعنی 4، است. آن را تقسیم میکنیم و گره میانی یعنی 190 را والد قرار میدهیم.
اکنون، گره ریشه شامل 6 فرزند و 5 کلید است که ویژگی درخت B+ را نقض میکند بنابراین باید آن را تقسیم کنیم که به صورت زیر نشان داده شده است.
عملیات حذف
مراحل عملیات حذف در درخت B+ بهصورت زیر است:
- کلید و دادهها را از برگهها حذف کنید.
- اگر گره برگ حاوی کمتر از حداقل تعداد عناصر است، گره را با خواهر و برادرش ادغام کرده و کلید بین آنها را حذف کنید.
- اگر گره شاخص حاوی کمتر از حداقل تعداد عناصر است، گره را با خواهر و برادر ادغام کرده و کلید بین آنها را به پایین حرکت دهید.
برای مثال فرض کنید میخواهید کلید 200 را از درخت B+ که در شکل زیر نشان داده شده است حذف کنید.
200 در زیر درخت سمت راست 190 بعد از 190 قرار دارد، آن را حذف کنید.
دو گره را با استفاده از 195، 190، 154 و 129 ادغام کنید.
اکنون، عنصر 120 تنها عنصر موجود در گره است که خصوصیات درخت B+ را نقض میکند بنابراین، باید آن را با استفاده از 60، 78، 108 و 120 ادغام کنیم.
اکنون ارتفاع درخت 1 واحد کاهش یافت.
عملیات جستجو
مراحل زیر برای جستجوی دادهها در درخت B+ از مرتبه m دنبال میشود. فرض کنید داده مورد جستجو k باشد.
- از گره ریشه شروع کنید. k را با کلیدهای گره ریشه [k1, k2, k3,......km - 1] مقایسه کنید.
- اگر k < k1، به فرزند سمت چپ گره ریشه بروید.
- اگر k > k1، به فرزند سمت راست گره ریشه بروید.
- در غیر این صورت اگر k == k1، k2 را برمیگردانیم.
- مراحل بالا را تکرار کنید تا به یک گره برگ برسید.
مثال زیر را در نظر بگیرید. فرض کنید به دنبال گره 129 در این درخت B+ هستیم:
ابتدا 129 را با 108 مقایسه میکنیم. چون 108 < 129 پس به زیر درخت سمت راست میرویم.
چون 120 < 129 پس به زیر درخت سمت راست میرویم.
گره مورد نظر را پیدا کردیم.
پیچیدگی عملیاتهای درخت B+
عملیات درج
پیچیدگی زمانیپیچیدگی زمانی الگوریتم چیست؟ معرفی نماد های مجانبیاین صفحه عالی به معرفی پیچیدگی زمانی الگوریتم پرداخته، همچنین انواع نماد های مجانبی و پیچیدگی زمانی های برخی از الگوریتم های مرتب سازی و جستجو را توضیح داده عملیات درج درخت B+ از مرتبه Θ(t.logt n) است.
عملیات حذف
پیچیدگی زمانی عملیات حذف از درخت B+ از مرتبه Θ(logn) است.
عملیات جستجو
اگر جستجوی خطی در داخل یک گره اجرا شود، پیچیدگی کل Θ(logt n) است (Θ(t) پیچیدگی زمانی جستجوی خطی است).
اگر از جستجوی دودویی استفاده شود، پیچیدگی کل Θ(log2t.logt n) است.
پیاده سازی درخت B+
در ادامه به پیاده سازی درخت B+ در زبان های برنامه نویسیزبان های برنامه نویسی چیست؟این مقاله عالی توضیح داده که زبان های برنامه نویسی چیست؟ و انواع زبان های برنامه نویسی و بهترین زبان برنامه نویسی برای شروع و پردرآمدترین آنها را معرفی کرده پایتونزبان برنامه نویسی پایتون چیست؟ – نحوه شروع و دلایل محبوبیتزبان برنامه نویسی پایتون (Python) چیست؟ این مقاله عالی به بررسی دلایل محبوبیت پایتون، موارد استفاده از پایتون و نحوه شروع به برنامه نویسی پایتون پرداخته و سی پلاس پلاسبرنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده میپردازیم:
Python
# B+ tee in python
import math
# Node creation
class Node:
def __init__(self, order):
self.order = order
self.values = []
self.keys = []
self.nextKey = None
self.parent = None
self.check_leaf = False
# Insert at the leaf
def insert_at_leaf(self, leaf, value, key):
if (self.values):
temp1 = self.values
for i in range(len(temp1)):
if (value == temp1[i]):
self.keys[i].append(key)
break
elif (value < temp1[i]):
self.values = self.values[:i] + [value] + self.values[i:]
self.keys = self.keys[:i] + [[key]] + self.keys[i:]
break
elif (i + 1 == len(temp1)):
self.values.append(value)
self.keys.append([key])
break
else:
self.values = [value]
self.keys = [[key]]
# B plus tree
class BplusTree:
def __init__(self, order):
self.root = Node(order)
self.root.check_leaf = True
# Insert operation
def insert(self, value, key):
value = str(value)
old_node = self.search(value)
old_node.insert_at_leaf(old_node, value, key)
if (len(old_node.values) == old_node.order):
node1 = Node(old_node.order)
node1.check_leaf = True
node1.parent = old_node.parent
mid = int(math.ceil(old_node.order / 2)) - 1
node1.values = old_node.values[mid + 1:]
node1.keys = old_node.keys[mid + 1:]
node1.nextKey = old_node.nextKey
old_node.values = old_node.values[:mid + 1]
old_node.keys = old_node.keys[:mid + 1]
old_node.nextKey = node1
self.insert_in_parent(old_node, node1.values[0], node1)
# Search operation for different operations
def search(self, value):
current_node = self.root
while(current_node.check_leaf == False):
temp2 = current_node.values
for i in range(len(temp2)):
if (value == temp2[i]):
current_node = current_node.keys[i + 1]
break
elif (value < temp2[i]):
current_node = current_node.keys[i]
break
elif (i + 1 == len(current_node.values)):
current_node = current_node.keys[i + 1]
break
return current_node
# Find the node
def find(self, value, key):
l = self.search(value)
for i, item in enumerate(l.values):
if item == value:
if key in l.keys[i]:
return True
else:
return False
return False
# Inserting at the parent
def insert_in_parent(self, n, value, ndash):
if (self.root == n):
rootNode = Node(n.order)
rootNode.values = [value]
rootNode.keys = [n, ndash]
self.root = rootNode
n.parent = rootNode
ndash.parent = rootNode
return
parentNode = n.parent
temp3 = parentNode.keys
for i in range(len(temp3)):
if (temp3[i] == n):
parentNode.values = parentNode.values[:i] + \
[value] + parentNode.values[i:]
parentNode.keys = parentNode.keys[:i +
1] + [ndash] + parentNode.keys[i + 1:]
if (len(parentNode.keys) > parentNode.order):
parentdash = Node(parentNode.order)
parentdash.parent = parentNode.parent
mid = int(math.ceil(parentNode.order / 2)) - 1
parentdash.values = parentNode.values[mid + 1:]
parentdash.keys = parentNode.keys[mid + 1:]
value_ = parentNode.values[mid]
if (mid == 0):
parentNode.values = parentNode.values[:mid + 1]
else:
parentNode.values = parentNode.values[:mid]
parentNode.keys = parentNode.keys[:mid + 1]
for j in parentNode.keys:
j.parent = parentNode
for j in parentdash.keys:
j.parent = parentdash
self.insert_in_parent(parentNode, value_, parentdash)
# Delete a node
def delete(self, value, key):
node_ = self.search(value)
temp = 0
for i, item in enumerate(node_.values):
if item == value:
temp = 1
if key in node_.keys[i]:
if len(node_.keys[i]) > 1:
node_.keys[i].pop(node_.keys[i].index(key))
elif node_ == self.root:
node_.values.pop(i)
node_.keys.pop(i)
else:
node_.keys[i].pop(node_.keys[i].index(key))
del node_.keys[i]
node_.values.pop(node_.values.index(value))
self.deleteEntry(node_, value, key)
else:
print("Value not in Key")
return
if temp == 0:
print("Value not in Tree")
return
# Delete an entry
def deleteEntry(self, node_, value, key):
if not node_.check_leaf:
for i, item in enumerate(node_.keys):
if item == key:
node_.keys.pop(i)
break
for i, item in enumerate(node_.values):
if item == value:
node_.values.pop(i)
break
if self.root == node_ and len(node_.keys) == 1:
self.root = node_.keys[0]
node_.keys[0].parent = None
del node_
return
elif (len(node_.keys) < int(math.ceil(node_.order / 2)) and node_.check_leaf == False) or (len(node_.values) < int(math.ceil((node_.order - 1) / 2)) and node_.check_leaf == True):
is_predecessor = 0
parentNode = node_.parent
PrevNode = -1
NextNode = -1
PrevK = -1
PostK = -1
for i, item in enumerate(parentNode.keys):
if item == node_:
if i > 0:
PrevNode = parentNode.keys[i - 1]
PrevK = parentNode.values[i - 1]
if i < len(parentNode.keys) - 1:
NextNode = parentNode.keys[i + 1]
PostK = parentNode.values[i]
if PrevNode == -1:
ndash = NextNode
value_ = PostK
elif NextNode == -1:
is_predecessor = 1
ndash = PrevNode
value_ = PrevK
else:
if len(node_.values) + len(NextNode.values) < node_.order:
ndash = NextNode
value_ = PostK
else:
is_predecessor = 1
ndash = PrevNode
value_ = PrevK
if len(node_.values) + len(ndash.values) < node_.order:
if is_predecessor == 0:
node_, ndash = ndash, node_
ndash.keys += node_.keys
if not node_.check_leaf:
ndash.values.append(value_)
else:
ndash.nextKey = node_.nextKey
ndash.values += node_.values
if not ndash.check_leaf:
for j in ndash.keys:
j.parent = ndash
self.deleteEntry(node_.parent, value_, node_)
del node_
else:
if is_predecessor == 1:
if not node_.check_leaf:
ndashpm = ndash.keys.pop(-1)
ndashkm_1 = ndash.values.pop(-1)
node_.keys = [ndashpm] + node_.keys
node_.values = [value_] + node_.values
parentNode = node_.parent
for i, item in enumerate(parentNode.values):
if item == value_:
p.values[i] = ndashkm_1
break
else:
ndashpm = ndash.keys.pop(-1)
ndashkm = ndash.values.pop(-1)
node_.keys = [ndashpm] + node_.keys
node_.values = [ndashkm] + node_.values
parentNode = node_.parent
for i, item in enumerate(p.values):
if item == value_:
parentNode.values[i] = ndashkm
break
else:
if not node_.check_leaf:
ndashp0 = ndash.keys.pop(0)
ndashk0 = ndash.values.pop(0)
node_.keys = node_.keys + [ndashp0]
node_.values = node_.values + [value_]
parentNode = node_.parent
for i, item in enumerate(parentNode.values):
if item == value_:
parentNode.values[i] = ndashk0
break
else:
ndashp0 = ndash.keys.pop(0)
ndashk0 = ndash.values.pop(0)
node_.keys = node_.keys + [ndashp0]
node_.values = node_.values + [ndashk0]
parentNode = node_.parent
for i, item in enumerate(parentNode.values):
if item == value_:
parentNode.values[i] = ndash.values[0]
break
if not ndash.check_leaf:
for j in ndash.keys:
j.parent = ndash
if not node_.check_leaf:
for j in node_.keys:
j.parent = node_
if not parentNode.check_leaf:
for j in parentNode.keys:
j.parent = parentNode
# Print the tree
def printTree(tree):
lst = [tree.root]
level = [0]
leaf = None
flag = 0
lev_leaf = 0
node1 = Node(str(level[0]) + str(tree.root.values))
while (len(lst) != 0):
x = lst.pop(0)
lev = level.pop(0)
if (x.check_leaf == False):
for i, item in enumerate(x.keys):
print(item.values)
else:
for i, item in enumerate(x.keys):
print(item.values)
if (flag == 0):
lev_leaf = lev
leaf = x
flag = 1
record_len = 3
bplustree = BplusTree(record_len)
bplustree.insert('5', '33')
bplustree.insert('15', '21')
bplustree.insert('25', '31')
bplustree.insert('35', '41')
bplustree.insert('45', '10')
printTree(bplustree)
if(bplustree.find('5', '34')):
print("Found")
else:
print("Not found")
C++
// Searching on a B+ tree in C++
#include <climits>
#include <fstream>
#include <iostream>
#include <sstream>
using namespace std;
int MAX = 3;
// BP node
class Node
{
bool IS_LEAF;
int *key, size;
Node **ptr;
friend class BPTree;
public:
Node();
};
// BP tree
class BPTree
{
Node *root;
void insertInternal(int, Node *, Node *);
Node *findParent(Node *, Node *);
public:
BPTree();
void search(int);
void insert(int);
void display(Node *);
Node *getRoot();
};
Node::Node()
{
key = new int[MAX];
ptr = new Node *[MAX + 1];
}
BPTree::BPTree()
{
root = NULL;
}
// Search operation
void BPTree::search(int x)
{
if (root == NULL)
{
cout << "Tree is empty\n";
}
else
{
Node *cursor = root;
while (cursor->IS_LEAF == false)
{
for (int i = 0; i < cursor->size; i++)
{
if (x < cursor->key[i])
{
cursor = cursor->ptr[i];
break;
}
if (i == cursor->size - 1)
{
cursor = cursor->ptr[i + 1];
break;
}
}
}
for (int i = 0; i < cursor->size; i++)
{
if (cursor->key[i] == x)
{
cout << "Found\n";
return;
}
}
cout << "Not found\n";
}
}
// Insert Operation
void BPTree::insert(int x)
{
if (root == NULL)
{
root = new Node;
root->key[0] = x;
root->IS_LEAF = true;
root->size = 1;
}
else
{
Node *cursor = root;
Node *parent;
while (cursor->IS_LEAF == false)
{
parent = cursor;
for (int i = 0; i < cursor->size; i++)
{
if (x < cursor->key[i])
{
cursor = cursor->ptr[i];
break;
}
if (i == cursor->size - 1)
{
cursor = cursor->ptr[i + 1];
break;
}
}
}
if (cursor->size < MAX)
{
int i = 0;
while (x > cursor->key[i] && i < cursor->size)
i++;
for (int j = cursor->size; j > i; j--)
{
cursor->key[j] = cursor->key[j - 1];
}
cursor->key[i] = x;
cursor->size++;
cursor->ptr[cursor->size] = cursor->ptr[cursor->size - 1];
cursor->ptr[cursor->size - 1] = NULL;
}
else
{
Node *newLeaf = new Node;
int virtualNode[MAX + 1];
for (int i = 0; i < MAX; i++)
{
virtualNode[i] = cursor->key[i];
}
int i = 0, j;
while (x > virtualNode[i] && i < MAX)
i++;
for (int j = MAX + 1; j > i; j--)
{
virtualNode[j] = virtualNode[j - 1];
}
virtualNode[i] = x;
newLeaf->IS_LEAF = true;
cursor->size = (MAX + 1) / 2;
newLeaf->size = MAX + 1 - (MAX + 1) / 2;
cursor->ptr[cursor->size] = newLeaf;
newLeaf->ptr[newLeaf->size] = cursor->ptr[MAX];
cursor->ptr[MAX] = NULL;
for (i = 0; i < cursor->size; i++)
{
cursor->key[i] = virtualNode[i];
}
for (i = 0, j = cursor->size; i < newLeaf->size; i++, j++)
{
newLeaf->key[i] = virtualNode[j];
}
if (cursor == root)
{
Node *newRoot = new Node;
newRoot->key[0] = newLeaf->key[0];
newRoot->ptr[0] = cursor;
newRoot->ptr[1] = newLeaf;
newRoot->IS_LEAF = false;
newRoot->size = 1;
root = newRoot;
}
else
{
insertInternal(newLeaf->key[0], parent, newLeaf);
}
}
}
}
// Insert Operation
void BPTree::insertInternal(int x, Node *cursor, Node *child)
{
if (cursor->size < MAX)
{
int i = 0;
while (x > cursor->key[i] && i < cursor->size)
i++;
for (int j = cursor->size; j > i; j--)
{
cursor->key[j] = cursor->key[j - 1];
}
for (int j = cursor->size + 1; j > i + 1; j--)
{
cursor->ptr[j] = cursor->ptr[j - 1];
}
cursor->key[i] = x;
cursor->size++;
cursor->ptr[i + 1] = child;
}
else
{
Node *newInternal = new Node;
int virtualKey[MAX + 1];
Node *virtualPtr[MAX + 2];
for (int i = 0; i < MAX; i++)
{
virtualKey[i] = cursor->key[i];
}
for (int i = 0; i < MAX + 1; i++)
{
virtualPtr[i] = cursor->ptr[i];
}
int i = 0, j;
while (x > virtualKey[i] && i < MAX)
i++;
for (int j = MAX + 1; j > i; j--)
{
virtualKey[j] = virtualKey[j - 1];
}
virtualKey[i] = x;
for (int j = MAX + 2; j > i + 1; j--)
{
virtualPtr[j] = virtualPtr[j - 1];
}
virtualPtr[i + 1] = child;
newInternal->IS_LEAF = false;
cursor->size = (MAX + 1) / 2;
newInternal->size = MAX - (MAX + 1) / 2;
for (i = 0, j = cursor->size + 1; i < newInternal->size; i++, j++)
{
newInternal->key[i] = virtualKey[j];
}
for (i = 0, j = cursor->size + 1; i < newInternal->size + 1; i++, j++)
{
newInternal->ptr[i] = virtualPtr[j];
}
if (cursor == root)
{
Node *newRoot = new Node;
newRoot->key[0] = cursor->key[cursor->size];
newRoot->ptr[0] = cursor;
newRoot->ptr[1] = newInternal;
newRoot->IS_LEAF = false;
newRoot->size = 1;
root = newRoot;
}
else
{
insertInternal(cursor->key[cursor->size], findParent(root, cursor), newInternal);
}
}
}
// Find the parent
Node *BPTree::findParent(Node *cursor, Node *child)
{
Node *parent;
if (cursor->IS_LEAF || (cursor->ptr[0])->IS_LEAF)
{
return NULL;
}
for (int i = 0; i < cursor->size + 1; i++)
{
if (cursor->ptr[i] == child)
{
parent = cursor;
return parent;
}
else
{
parent = findParent(cursor->ptr[i], child);
if (parent != NULL)
return parent;
}
}
return parent;
}
// Print the tree
void BPTree::display(Node *cursor)
{
if (cursor != NULL)
{
for (int i = 0; i < cursor->size; i++)
{
cout << cursor->key[i] << " ";
}
cout << "\n";
if (cursor->IS_LEAF != true)
{
for (int i = 0; i < cursor->size + 1; i++)
{
display(cursor->ptr[i]);
}
}
}
}
// Get the root
Node *BPTree::getRoot()
{
return root;
}
int main()
{
BPTree node;
node.insert(5);
node.insert(15);
node.insert(25);
node.insert(35);
node.insert(45);
node.insert(55);
node.insert(40);
node.insert(30);
node.insert(20);
node.display(node.getRoot());
node.search(15);
}
کاربردهای درخت B+
از کاربردهای درخت B+ میتوان به موارد زیر اشاره کرد:
- شاخصسازی چندسطحی
- عملیات سریعتر روی درخت (درج، حذف، جستجو)
- شاخصسازی
مقایسه درخت B+ و درخت B
برجستهترین نقاط مقایسه بین B-tree و B+tree شامل موارد زیر است:
- در B+trees، کلیدهای جستجو را میتوان تکرار کرد، اما این مورد برای B-trees نیست.
- درختان B به دادهها اجازه میدهند فقط در گرههای برگ ذخیره شوند، در حالی که درختان B دادهها را در گرههای برگ و داخلی ذخیره میکنند.
- در B+trees، دادههای ذخیره شده در گره برگ، جستجو را کارآمدتر میکند، زیرا میتوانیم کلیدهای بیشتری را در گرههای داخلی ذخیره کنیم - این بدان معناست که ما نیاز به دسترسی به گرههای کمتری داریم.
- حذف دادهها از B+tree آسانتر و سریعتر است زیرا فقط باید دادهها را از گرههای برگ حذف کنیم.
- گره های برگ در B+tree به هم مرتبط هستند و عملیات جستجو را کارآمد و سریع میکنند.
جمعبندی
B+ Tree توسعهای از B Tree است که امکان درج، حذف و عملیات جستجو را فراهم میکند. در B Tree، کلیدها و رکوردها را میتوان در گره های داخلی و برگ ذخیره کرد. در درخت B+، رکوردها (دادهها) فقط روی گرههای برگ نگهداری میشوند، در حالی که گرههای داخلی فقط میتوانند مقادیر کلیدی را ذخیره کنند. در این مقاله، درخت B+ را از نزدیک بررسی کردیم. ما یاد گرفتیم که آنها چگونه ساخته میشوند و یاد گرفتیم که چگونه میتوانیم یک مقدار خاص را جستجو، درج یا حذف کنیم؛ همچنین پیادهسازیهایی از این نوع درخت را دیدیم و با برخی کاربردها و تفاوت آن با درخت B آشنا شدیم.
درخت B+ چیست؟
درخت B+ از ریشه، گره های داخلی و برگ تشکیل شده است. ریشه ممکن است یک برگ یا یک گره با دو یا چند فرزند باشد. درخت B+ را میتوان به عنوان یک درخت B مشاهده کرد که در آن هر گره فقط حاوی کلیدها است (نه جفتهای کلید-مقدار) و یک سطح در پایین با برگهای مرتبط اضافه می کند.
درخت B+ چگونه در پایگاه داده استفاده میشود؟
پایگاههای داده SQL از درختهای B+ برای ذخیره کارآمد دادهها و انجام عملیاتهایی مانند درج، بهروزرسانی، یافتن و حذف با پیچیدگی زمانی O(log n) استفاده میکنند. این امر مدیریت و ذخیره حجم زیادی از داده ها را قابل مدیریت و کارآمدتر می کند.
چرا درخت B+ سریعتر از B-tree است؟
جستجو در درخت B ناکارآمد است زیرا رکوردها در گره های برگ یا درونی ذخیره می شوند. از آنجا که تمام رکوردها در گره های برگ درخت B+ ذخیره میشوند، جستجو بسیار کارآمد یا سریعتر است. در مقابل عملیات درج بیشتر طول میکشد و گاهی اوقات غیرقابل پیشبینی است.
درس هوش مصنوعی
هوش مصنوعی در جهان با نام آلن تورینگ گره خورده است. اولین بار در سال 1950 آلن تورینگ آزمایشی تعریف کرد که آزمایش تورینگ نام گرفت. قبل از ساخته شدن این آزمایش، آلن تورینگ ابتدا مقالهای را ارائه داد که در آن مقاله از بازیای با نام Imitation یا تقلید نام برده بود. هدف از طراحی این آزمایش، پاسخ دادن به سوال "آیا ماشینها میتوانند فکر کنند؟" بود. به عقیده آلن تورینگ، ماشینی هوشمند است که وقتی افراد با آن ارتباط برقرار میکنند، نتوانند تشخص دهند که فردی که در تعامل با آن هست یک ماشین است یا یک انسان. بعد از گذشت بیش از 70 سال از این آزمایش، هنوز هم آزمایش تورینگ از آزمایشهایی است که در تمامی دروس و مباحث هوش مصنوعی یاد میشود.
امروزه هوش مصنوعی به یکی از مباحث جداییناپذیر از روزمرگی ما انسانها تبدیل شده است. از دوربینهای مدار بسته در خیابانها گرفته تا سایتهای فروشگاهی، ماشینها، ابزارآلات کارخانهجات و... همگی به نحوی با هوش مصنوعی در ارتباط هستند. درس هوش مصنوعی یکی از دروش چالشی در دوره کارشناسی میباشد که عمدتا شامل مباحث جستجو و منطق است. از آنجا که این درس در کنکور ضریب بالایی دارد، یادگیری دقیق و اصولی این درس از اهمیت بالایی برخوردار است.
هوش مصنوعی چیست و کجا مورد استفاده قرار میگیرد؟
هوش مصنوعیهوش مصنوعی (AI) چیست؟ انواع، کاربردها، مزایا و معایبهوش مصنوعی یا Artificial Intelligence یا به اختصار AI، امروزه کاربردهای بسیاری پیدا کرده و به یکی از داغترین حوزههای بشر تبدیل شده است، اما با این وجود بسیاری از افراد با کاربردهای آن آشنایی کامل ندارند، به همین علت در این صفحه کاربردها، مزایا و معایب AI بطور کامل بررسی شده است یا Artificial Intelligence از دو کلمه "هوش" و "مصنوعی" تشکیل شده است و به چیزی اطلاق میشود که واقعی نیست (مصنوعی است) اما باهوش هم هست و قادر است تفکر کند و تجربه کسب کند و همچنین بر اساس این تجربیات یاد بگیرد و تصمیمگیریهای بهتری انجام دهد. اکثر مردم وقتی کلمه هوش مصنوعی را میشنوند به یاد رباتهای نابودکننده و ابزارهای ابرانسانی فیلمهای هالیوودی میافتد که هیچ هدفی جز نابود کردن نسل انسانها ندارند!! درحالی که رباتها تنها بخش کوچکی از هوش مصنوعی هستند و اهدافی غیر از نابود کردن هم دارند. آنالیز کردن دادهها، داده کاویداده کاوی چیست؟ بررسی 0 تا 100 دیتا ماینینگ (data mining)این مقاله عالی بررسی کرده که داده کاوی یا دیتا ماینینگ (data mining) چیست و چه کاربردی دارد، سپس انواع روش های داده کاوی و مزایای دیتا ماینینگ را بررسی کرده، یادگیری ماشینیادگیری ماشین چیست و چرا مهم است؟ - Machine learning (ML)تعریف یادگیری ماشین : ماشین لرنینگ (Machine Learning یا به اختصار ML) باعث میشود که خود ماشینها با آنالیز داده ها امکان یادگیری و پیشرفت داشته باشند، این مقاله فوق العاده یادگیری ماشین را بصورت کامل بررسی کرده است، یادگیری عمیقیادگیری عمیق چیست؟ معرفی کامل یادگیری عمیق به زبان سادهاین مقاله به سوالات رو به رو پاسخ داده : یادگیری عمیق چیست و چگونه کار میکند؟ آیا یادگیری عمیق همان شبکه عصبی است؟ تفاوت یادگیری عمیق با یادگیری ماشین چیست؟، شبکه های عصبیشبکه عصبی یا شبکه عصبی مصنوعی (nueral network) چیست؟این مقاله عالی به معرفی شبکه عصبی یا شبکه عصبی مصنوعی (nueral network) پرداخته، همچنین الگوریتم شبکه عصبی، انواع و کاربرد و تاریخچه شبکه های عصبی بررسی شده و خیلی از زمینههای دیگر هوش مصنوعی وجود دارند که کاملا درون کامپیوترکامپیوتر چیست؟ ⚡️ کامپیوتر چیست به زبان سادهاین مقاله عالی توضیح داده که کامپیوتر چیست و چه کاربردی دارد و همه چیز درباره کامپیوتر از جمله فواید کامپیوتر و تعریف کامپیوتر و اجزای آن را بیان کرده است قرار گرفتهاند و دارای هیچ ماهیت فیزیکی نمیباشند.
در این بخش، مشاغل و صنعتهای جدیدی که از هوش مصنوعی استفاده میکنند را معرفی کرده و در مورد آنها بحث میکنیم:
- تعلیم رباتها به وسیله هوش مصنوعی برای کارهای مختلف: یکی از موارد هیجانانگیز هوش مصنوعی، رباتهای خبره هستند. به وسیله هوش مصنوعی میتوان رباتهایی ساخت که تجربه کسب کنند و از تجربیات خود موارد مختلفی را یاد بگیرند؛ به عنوان مثال بازوهای الکترونیکی که امروزه جایگزین کارگران در کارخانهها شده و کارهای محول شده را با دقت بیشتر و سریعتر از انسان انجام میدهد یا به عنوان مثالی دیگر که امروزه جزء مباحث داغ قرار دارد، میتوان به رباتهای جراح اشاره کرد. این رباتها با ظرافت هرچه بیشتر و بدون خستگی میتوانند عملهای حیاتی جراحی را به نحو احسن انجام دهند و هر روزه بر توانایی این رباتها نیز افزوده میشود.
- هوش مصنوعی در تجارت الکترونیک: استفاده از هوش مصنوعی در تجارت الکترونیک، یکی از دستاوردهای مهم متخصصان هوش مصنوعی بود که امروزه همه ما با آن سروکار داریم. شاید اگر از کاربران قدیمی اینترنت باشید به خاطر دارید که تبلیغهایی که قبلا مشاهده میکردید در اکثر مواقع بیربط با نیازهای ما بود و یا پستهایی که در شبکههای اجتماعی مثل فیسبوک برایمان ظاهر میشد، ربطی به علاقههای ما نداشت. امروزه با مباحث هوش مصنوعی و یادگیری، امورات انجام شده کاربران مثل جستجوها و خریدها، ثبت شده و توسط ابزارهای هوش مصنوعی مورد بررسی قرار میگیرند تا محصولات و محتواهایی در خور نیاز ما در صفحات اول فروشگاهها، در تبلیغات و شبکههای اجتماعی مثل اینستاگرام برایمان آورده شود.
- ساخت خودروهای خودران: امروزه شرکتهای مختلفی مثل تسلا، آئودی، تویوتا و ولوو وجود دارند که با استفاده از یادگیری عمیق و یادگیری ماشین، برای آموزش سیستمهای تعبیه شده درون خودروها استفاده میکنند تا این خودروها بدون نیاز به سرنشین مسافتهای طولانی را حرکت کنند و موانع مختلف را تشخیص دهند. این ماشینها کمک شایانی به انسانها میکند، جلوگیری از تصادف، پیمایش مسیرهای طولانی بدون نیاز به استراحت و خواب، رعایت کردن دقیق قوانین رانندگی از جمله مزایای این خودروها میباشند.
- موارد بسیار دیگری وجود دارد که مباحث هوش مصنوعی را وارد عرصه کار خود کردهاند مانند حوزه پزشکی، هوش مصنوعی در هواشناسی، در بازیهای کامپیوتری، در امور کشاورزی، در ساخت خانه هوشمند، حوزه نویسندگی و...
درس هوش مصنوعی
درس هوش مصنوعی از جمله دروس تخصصی رشتههای مهندسی کامپیوترمهندسی کامپیوتر چیست؟ معرفی رشته کامپیوتر توسط اساتید شریفاین صفحه به معرفی کامل رشته کامپیوتر، اعم از دروس رشته کامپیوتر، درآمد رشته کامپیوتر، شغل های رشته کامپیوتر، گرایش ها و زیر شاخه های رشته کامپیوتر پرداخته است، مهندسی فناوری اطلاعاتمعرفی فناوری اطلاعات (IT) - 7 دلیل برای انتخاب رشته آی تی در دانشگاهآی تی چیست و چگونه پس از ظهور توانست در مدت فقط 20 سال تمام دنیا را فرا بگیرد و اکثر پول دنیا را ببلعد و پرطرفدارترین و پر درآمدترین مشاغل دنیا را در بر گیرد، با بررسی کامل آی تی با ما همراه باشید. (IT) و علوم کامپیوترعلوم کامپیوتر یا کامپیوتر ساینس چیستدر این صفحه به بررسی و موشکافی رشته علوم کامپیوتر اعم از بررسی بازار کار، گرایشها، دروس و چارت درسی این رشته، میزان درآمد و حقوق فارغ التحصیلان این رشته و ادامه تحصیل در این رشته پرداخته شده است. است. این درس جزء دروس مهم رشته مهندسی کامپیوتر به حساب میآید، بهویژه برای دانشجویانی که قصد ادامه دادن این رشته در کارشناسی ارشد را دارند. این درس در دانشگاههای ایران با عنوان هوش مصنوعی و سیستم های خبره ارائه میشود و شامل مباحث مقدماتی و تئوری هوش مصنوعی است. دروس ساختمان دادهآموزش ساختمان داده و الگوریتمهر ساختمان داده یک نوع فرمت ذخیرهسازی و مدیریت دادهها در کامپیوتر است، که امکان دسترسی و اصلاح کارآمد آن دادهها را برای یکسری از الگوریتمها و کاربردها فراهم میکند، در این صفحه به بررسی و آموزش ساختمان داده و الگوریتم پرداخته شده است و طراحی الگوریتمآموزش طراحی الگوریتم به زبان سادهدرس طراحی الگوریتم یکی از مهمترین و بنیادیترین دروس رشته کامپیوتر است. هدف از این درس، معرفی روشهای مختلف طراحی الگوریتمها برای حل مسائل گوناگون است، در این صفحه به معرفی و آموزش طراحی الگوریتم پرداخته شده است. از دروس مهمی هستند که پیش از مطالعه این درس لازم به گذراندن آنها است؛ همچنین آشنایی با برخی از مباحث ریاضیات مثل جبر خطی و ریاضی گسستهجامع ترین آموزش درس ریاضی گسستهدرس ریاضیات گسسته به معرفی مباحثی نظیر شمارش و احتمال، استدلال و برهان خلف، نظریه اعداد، منطق ریاضی، روابط بازگشتی، روابط و نظریه گراف میپردازد. از آن رو که در عصر کنونی ریاضی گسسته بطور گسترده در رشته کامپیوتر و برنامه نویسی استفاده میشود در این صفحه به معرفی و بررسی درس ریاضی گسسته پرداخته شده است، به یادگیری و درک بهتر درس هوش مصنوعی کمک شایانی میکند. این درس معمولا در نیمه دوم تحصیلی توسط دانشجویان اخذ میشود (ترم 4 تا ترم 6). درس هوش مصنوعی همچنین یکی از دروس مهم برای فارغالتحصیلان مقطع کارشناسی که قصد دارند در رشته هوش مصنوعی به ادامه تحصیل بپردازند به حساب میآید؛ چه از لحاظ یادگیری مبانی هوش مصنوعی و چه از لحاظ تستهای کنکوری.
پیش نیازهای درس هوش مصنوعی
با توجه به الگوریتمالگوریتم چیست به زبان ساده و با مثال های فراواندر این مقاله به زبان بسیار ساده و با مثال های متعدد توضیح داده شده که الگوریتم چیست و چه کاربردهایی داردهای مختلف و بررسی پیچیدگی زمانیپیچیدگی زمانی الگوریتم چیست؟ معرفی نماد های مجانبیاین صفحه عالی به معرفی پیچیدگی زمانی الگوریتم پرداخته، همچنین انواع نماد های مجانبی و پیچیدگی زمانی های برخی از الگوریتم های مرتب سازی و جستجو را توضیح داده و فضا در الگوریتمهای ارائه شده در درس هوش مصنوعی، پیشنیاز این درس در مقطع کارشناسی، دروس ساختمان داده و الگوریتمها است؛ همچنین درس جبر خطی به عنوان هم نیاز درس هوش مصنوعی است اما از آنجایی که درسهای پیش نیاز به نوبه خود پیش نیازهای دیگری دارند، باعث میشود سلسه مراتبی از دروس پیش نیاز بهوجود آید.
- پیش نیاز درس هوش مصنوعی: ساختمان داده و الگوریتمها
- پیش نیاز درس ساختمان داده و الگوریتمها: دروس برنامه نویسیبرنامه نویسی کامپیوتر چیست و چطور می توانید یک برنامه نویس موفق شوید؟در عصر فعلی برنامهنویسی یکی از پرطرفدارترین شغلهای دنیاست، دغدغهای افرادی که میخواهند در مسیر برنامهنویس شدن قدم بردارند این است که نمیدانند از کجا باید شروع کنند، در این صفحه هر آن چه برای تبدیل شدن به یک برنامه نویس حرفه ای نیاز دارید در اختیارتان قرار گرفته است پیشرفته و ریاضیات گسسته
- پیش نیاز درس برنامه نویسی پیشرفته و ریاضیات گسسته: درس مبانی برنامه نویسی
- پیش نیاز درس جبر خطی: ریاضی عمومی 2
- پیش نیاز درس ریاضی عمومی 2: ریاضی عمومی 1
همچنین کارگاه مبانی کامپیوتر و گارگاه برنامه نویسی پیشرفته نیز همنیاز درس مبانی پیشرفته و برنامه نویسی پیشرفته هستند.
پس به طور خلاصه برای اخذ درس هوش مصنوعی نیاز به قبولی در دروس زیر است:
- ریاضی عمومی 1
- ریاضی عمومی 2
- ریاضیات گسسته
- مبانی برنامه نویسی
- برنامه نویسی پیشرفته
- کارگاه مبانی برنامه نویسی
- کارگاه برنامه نویسی پیشرفته
- ساختمان داده و الگوریتمها
منابع درس هوش مصنوعی در دانشگاه ها
منبع درس اصلی هوش مصنوعی، کتاب هوش مصنوعی با عنوان Artificial Intelligence: A Modern Approach که توسط استوارت راسل (Stuart Russell) و پیتر نورویگ (Peter Norvig) نوشته شده است، میباشد. در اکثر دانشگاههای ایران این کتاب تدریس میشود و مرجع سوالات کنکور نیز همین کتاب است. این کتاب با هدف شروع مبانی هوش مصنوعی و تدریس در دانشگاهها منتشر شده است. کتاب هوش مصنوعی با رویکردی نوین، توسط مترجمهای مختلفی به زبان فارسی ترجمه شده است. البته لازم به ذکر است که تنها 10 فصل ابتدایی این کتاب به عنوان منبع درس هوش مصنوعی دانشگاه توسط وزارت علوم انتخاب شده است؛ در حالی که این کتاب شامل 28 فصل میباشد.
سرفصل های کتاب هوش مصنوعی: رویکردی نوین
همانطور که گفته شد، کتاب هوش مصنوعی راسل شامل 28 فصل است و تنها 10 فصل آن در طول یک ترم به دانشجویان تدریس میگردد. در این قسمت این 10 فصل را یک مرور کوتاهی میکنیم تا با کلیات قضیه آشنا شوید:
- فصل اول؛ مقدمه (Introduction): در این فصل به طور کلی تاریخچه هوش مصنوعی، نیاز بشر به هوش مصنوعی و چالشهای آن مورد بررسی قرار گرفته است.
- فصل دوم؛ عاملهای هوشمند (Intelligent Agents): این فصل به بحث و گفتگو در مورد عاملهای هوشمند و محیط کارکرد آنها پرداخته است؛ همچنین اصطلاحات مربوط به بحثهای هوش مصنوعی مانند خرد، عقلانیت، انواع محیطها و طبیعت هوش مصنوعی در این فصل مطرح گردیده است.
- فصل سوم؛ حل مساله به وسیله جستجو (Solving Problems by Searching): یکی از مباحث مهم در رشته هوش مصنوعی، مباحث جستجو یا به اصطلاح Searching است. در این فصل راجع به عاملهای حل کننده مساله و جستجو کردن برای حل مساله و رسیدن به جواب نهایی، انواع الگوریتمهای جستجو (نا آگاهانه) و ویژگیهای آنها بحث میشود؛ مانند جستجوها و توابع ابتکاری (Heuristic)، جستجوی یکپارچه و...
- فصل چهارم؛ جستجو های آگاهانه (Search in Complex Environments): این فصل هول محور الگوریتمهای جستجوی محلی برای حل مسائل بهینه سازی میگردد. جستجوهای محلی، جستجو با اعمال غیر قطی، جستجوهای محیط ناشناخته و روی خط نیز از مباحث دیگری هستند که در این فصل مطرح میگردد.
- فصل پنجم؛ جستجوهای خصمانه یا رقابتی (Adversarial Search and Games): همانطور که از نام این فصل پیداست، این فصل در مورد جستجوهای رقابتی که ردپای آن در اکثر بازیها قابل مشاهده است بحث میکند. انواع الگوریتمهای تصمیمگیری بهینه و کسب بیشترین امتیاز در بازیها مانند هرس کردن آلفا-بتا، بازیهای تصادفی و بسیاری موارد دیگر در این فصل مورد بررسی قرار میگیرند.
- فصل ششم؛ مسائل ارضاء محدودیت (Constraint Satisfaction Problems): مسائل ارضای محدودیت یا به اختصار CSP، یکی از مبحثهای هوش مصنوعی میباشد. بسیاری از مسائل مطرح شده در هوش مصنوعی، قابلیت این را دارند که به صورت یک مساله ارضای محدودیت تعریف شوند، در مسائل CSP، یک مجموعه متغیری تعریف میشود و سپس تعدادی محدودیت برای مقادیری که این متغیر متغیر در برنامه نویسی چیست ⚡️انواع متغیر در برنامه نویسیاین صفحه عالی بررسی کرده متغیر در برنامه نویسی چیست و انواع متغیر در برنامه نویسی را معرفی و مراحل کار با متغیر، نحوه تعریف و قوانین نامگذاری متغیرها را گفته ها میتوانند اختیار کنند قرار داده میشود. حل این مسائل شامل مجموعه از از مقادیر منحصر به فرد یا Unique برای تمامی متغیرها است به طوری که تمامی محدودیتها ارضا شده باشند. یک مثال ساده برای مسائل CSP، بازی سودوکو است که در آن خانههای مربعی میتوانند عددهای مختلفی داشته باشند، اما به علت اینکه در هر سطر و ستون تنها هر عدد یکبار باید ظاهر شود، بنابراین محدودیتهایی برای انتخاب عدد در هر خانه در نظر گرفته میشود. در این فصل همچنین انواع جستجوها مانند جستجوی عقبگرد برای CSPها، جستجوی محلی و موارد دیگری مورد بررسی قرار میگیرد.
- فصل هفتم؛ عاملهای منطقی (Logical Agents): این فصل مقدمه توصیف عاملهای منطقی در هوش مصنوعی است. عاملهای منطقی عاملهایی هستند که بر اساس دانش عمل میکنند. در این فصل یک نمونه ساده که جهان وامپوس یا Wumpus World نام دارد، مورد بررسی قرار میگیرد. عاملی که در این جهان قرار گرفته است میبایست با توجه به درکی که از محیط پیرامون خود دارد و بر اساس تجزیه و تحلیل آن، بتواند مسیر درست را تا رسیدن به هدف انتخاب کند. مواردی از قبیل منطق گزارهای، مدل های گزارهای و عاملهای مبتنی بر منطق گزارهای نیز در این فصل مورد بررسی قرار میگیرند.
- فصل هشتم؛ منطق مرتبه اول (First-Order Logic): منطق مرتبه اول از سیستمهای سوری است که به آن منطق گزارهای (Predicate Logic) یا حساب گزارهای مرتبه اول (First-Order Predicate Calculus) میگویند. این منطق در ریاضیات، فلسفه، زبان شناسی و علوم کامپیوتر کاربردهای متعددی دارد و به همین خاطر فصل هشتم کتاب هوش مصنوعی راسل به این مبحث اختصاص داده شده است. در منطق مرتبه اول بر خلاف منطق گزارهای، میتوان از متغیرهای سور داده شده بر روی اشیاء غیر منطقی استفاده کرد؛ به عنوان مثال جمله یک دانشآموز y وجود دارد که y علی است و y انسان است را در نظر بگیرید. در این جمله "وجود دارد" سور و y "متغیر" است.
- فصل نهم؛ استنتاج در منطق مرتبه اول (Inference in First-Order Logic): این فصل ادامه فصل قبل میباشد و در مورد استنتاج در منطق مرتبه اول بحث میکند. در این فصل زنجیرههای عقب رو و جلو رو برای استنتاج در منطق مرتبه اول مورد بررسی قرار میگیرند.
- فصل دهم؛ توصیف دانش (Knowledge Representation): دانش، که در بعضی متون ممکن است معرفت هم نامیده شود، آشنایی و درک یک فرد مانند اطلاعات و حقایق است که از طریق تجربه یا آموزش از طریق ادراک و یادگیری بدست میآید. فصل دهم کتاب هوش مصنوعی به این مبحث تعلق گرفته و موارد مختفی را شامل میشود؛ مانند مهندسی هستی شناسی (Ontological Engineering)، رویدادها (Events)، اشیاء ذهنی و منطق مدال (Mental Objects and Modal Logic). همچنین موارد استدلالی برای این سیستمها بر اساس اطلاعات پیشفرض نیز مورد بحث قرار میگیرد.
دانلود کتاب هوش مصنوعی: رویکردی نوین
هم اکنون نسخه 4 کتاب هوش مصنوعی: رویکردی نوین آخرین نسخه چاپ شده این کتاب است که در سال 2020 به چاپ رسیده است. از طریق لینک زیر | با کلیک بر روی تصویر زیر میتوانید این کتاب را دانلود کنید.
منابع درسی هوش مصنوعی به زبان فارسی
ترجمههای فارسی متفاوتی از کتاب هوش مصنوعی با رویکردی نوین راسل وجود دارد که در اینجا محبوبترین آنها را معرفی میکنیم. این کتابها هم میتوانند به عنوان منبع درسی هوش مصنوعی در دانشگاهها مورد استفاده قرار گیرند و هم منبعی هستند برای تستهای کنکور.
در لیست زیر 4 تا از محبوبترین ترجمهها را مشاهده میکنید:
- ترجمه کتاب راسل از جعفر نژاد قمی؛ عنوان کتاب: هوش مصنوعی (رهیافتی نوین). این کتاب به عنوان منبع اصلی برای درس هوش مصنوعی در دانشگاههای پیام دور به حساب میآید.
- ترجمه کتاب راسل از حمیدرضا قنبری و سجاد محمد زاده
- ترجمه کتاب راسل از دکتر هشام فیلی منتشر شده توسط انتشارات نصیر؛ عنوان کتاب: هوش مصنوعی همراه با بازنگری کامل. این کتاب یکی از ترجمههای دقیق و خوانای کتاب راسل میباشد.
- ترجمه کتاب راسل از آیدین خوشنویس حسینی
شاخه های هوش مصنوعی
هوش مصنوعی که خود یک شاخه از علوم کامپیوتر است، دارای شاخههای متعددی میباشد که هر شاخه نیز به شاخههای دیگری نیز قابل تقسیم است. در این قسمت به برخی از مهمترین این شاخهها میپردازیم.
یادگیری ماشین
یکی از شاخههای مهمی که کاربردهای بسیار زیادی در صنعت دارد، یادگیری ماشین یا Machine Learning (به اختصار ML) است. در یادگیری ماشین، سیستمهای هوشمند طوری طراحی و ساخته میشوند که با استفاده از اطلاعات دریافتی و بدون برنامهریزی اولیه و تنها با الگوریتمهای نوشته شده، عامل شروع به یادگیری و تحلیل کند تا بتواند بر اساس یادگیریهای خود موارد خواسته شده را پیشبینی و یا محاسبه کند. فرض کنید هزاران داده آماری مربوط به روند تغییر قیمت سهام را در اختیار دارید، به وسیله یادگیری ماشین، عامل میتواند شروع به یادگیری از طریق این دادهها کند و بر اساس آنها و الگوی دریافت شده از آنها، قیمت سهام را در آینده پیشبینی کند. با توجه به اینکه در دنیای امروزی دادهها بسیار حجیم هستند، در نتیجه اهمیت کلان دادهها و آنالیز آنها به یک امری جدی برای بشر تبدیل شده است. استفاده از هوش مصنوعی و یادگیری ماشین، کمک شایانی به رسیدگی به امورات تجزیه و تحلیلی میکند. تعدادی از مواردی که یادگیری ماشین میتواند به آنها رسیدگی کند را در لیست زیر مشاهده میکنید:
- پردازش تصویرپردازش تصویر دیجیتال چیست؟ چه انواعی دارد؟ چه مراحلی را شامل میشود؟ پردازش تصویر یکی از فیلدهای پرطرفدار مرتبط با گرافیک کامپیوتر، بینایی کامپیوتر، هوش مصنوعی، یادگیری ماشین، و الگوریتمها و محاسبات است که ارتباط تنگاتنگی میان تمام آنهاست. در نتیجه در این صفحه علاوه بر معرفی این فیلد، نقشه راهی نیز برای علاقهمندان این حوزه ارائه کردهایم.، تشخیص چهره، تشخیص انواع حرکت
- تشخیص تومورهای سرطانی
- تولید انرژی، پیشبینی قیمت سهام
- ساخت خودروهای هوشمند
- برنامههای تشخیص و شناسایی صدا و زبان
- امورات مالی، انجام انواع محاسبات، تجارت الگوریتمی
یادگیری عمیق
یادگیری عمیق یا Deep Learning یکی از حوزههای هوش مصنوعی و در واقع زیر مجموعهای از یادگیری ماشین است. در یادگیری عمیق، طراحی سیستمهای کامپیوتری هوشمند به گونهای طراحی و برنامهریزی میشوند تا بتوانند همانند یک انسان در مورد مسائل مشخص شده یاد بگیرند و راهحلهایی ارائه کنند. مهندسان علم داده مهندسی داده چیست؟ – چطور یک مهندس داده شویم؟این مقاله به بررسی مهندسی داده و اینکه چطور می توان یک مهندس داده شد پرداخته و مسیر یادگیری و درآمد مهندس داده و تفاوت مهندسی داده و علم داده را بررسی کرده از موارد مختلفی مانند آمار و مدلسازی برای پیاده سازی سیستمهای یادگیری عمیق استفاده میکنند. به طور کلی استفاده از یادگیری عمیق، جمعآوری، آنالیز و تفسیر کلان دادهها را آسانتر و بسیار سریعتر میکند. ورودی الگوریتمهایی که برای یادگیری عمیق وجود دارند، دادههای مختلفی است که از دنیای خارجی به آنها میرسد، مانند متون، صوت، تصاویر و موارد دیگر. این الگوریتمها با در اختیار داشتن چنین اطلاعاتی، سعی میکنند الگوهایی را پیدا کنند تا بتوانند به وسیله آن پیشبینی خاصی را حول موضوع مشخص شده انجام دهند.
یادگیری تقویتی
در یادگیری تقویتی یا Reinforcement Learning، عامل محیط پیرامون را بررسی و تجزیه تحلیل میکند و بر اساس آن یک اقدامی انجام میدهد سپس نتیجه این اقدام را مشاهده کرده و مورد بررسی قرار میدهد بنابراین علاوه بر دادههای اولیه، ماشینهای هوشمند بر اساس تجربیات خودشان نیز دانش کسب میکنند و رفتار و عملکردشان را تغییر میدهند. این تجربیات و رفتارها آنقدر تغییر کرده و پیشرفت میکند تا عامل هوشمند به هدف خود برسد.
شبکه های عصبی
مغز انسان یکی از پیچیدهترین و شگرفترین سیستمی است که به عقیده دانشمندان در کل جهان هستی وجود دارد. تمامی رفتارهایی که به صورت خودآگاه یا ناخودآگاه از انسان سر میزند، تحت کنترل مغز او هستند. سرعت و قدرت بالای مغز انسان به ارتباطات پیچیدهای بر میگردد که در میان سلولهای زنده مغز انسان وجود دارد. به همین علت، عملکرد فوقالعاده مغز انسان در بسیاری از موارد مختلف باعث شده تا شبیه سازی مغز انسان و ویژگیهای آن، به یکی از الگوهای مهم برای مهندسین نرم افزار و سخت افزارسخت افزار چیست - بررسی اجزای اصلی سخت افزار کامپیوتردر این صفحه بررسی شده که سخت افزار چیست و سخت افزار کامپیوتر به زبان ساده معرفی شده است، همچنین به بررسی اجزای اصلی سخت افزار کامپیوتر پرداخته شده است تبدیل شود.
تحقیقات و ابداعاتی که در راستای شبیهسازی رفتار مغز انسان از جهت پردازش و محاسباتی انجام شده است، باعث بهوجود آمدن علم جدیدی در هوش مصنوعی تحت عنوان شبکه های عصبی مصنوعی یا Artificial Neural Network شد. در این علم شبکههای عصبی، مدلهای نرم افزاری و ریاضی گوناگونی با الهام گرفتن از عملکرد و ساختار مغز انسان پیشنهاد شدهاند که برای حل مسائل کامپیوتری مختلفی مورد استفاده قرار میگیرند؛ به عنوان مثال در حوزه مسائل کاربردی و مهندسی، در مسائل علمی و...
در لیست زیر، تعدادی از کاربردهای مختلف شبکههای عصبی مصنوعی را آوردهایم:
- توسعه نرم افزارهای آنتی ویروس
- مدلسازی سیستمها به وسیله مهندسی معکوس
- عیبیابی سیستمهای صنعتی
- بهینهسازی سیستمهای مهندسی
- پیشبینی نتایج آزمایشها
- تشخیص بیماریها با توجه به نتایج آزمایشهای پزشکی و تصویربرداریها
- پیشبینی قیمت سهام و شاخص بورس
- تخصیص سرمایه
- طبقهبندی و کاوش متون ادبی
- هدفگیری و تعقیب در سلاحهای موشکی
- پیادهسازی سیستمهای دفاعی
- پیشبینی رفتار نیروی مهاجم
رباتیک
شاید ملموسترین کاربرد هوش مصنوعی برای عموم مردم، علم رباتیک (Robotics) باشد. ربات در واقع محصول مشترک علم مهندسی و فناوری است. رباتها ماشینهایی هستند که رفتارهای انسان را تقلید کرده و میتواند در بسیاری از امورات مختلف جایگزین انسانها شوند و یا دستیار انسان باشند. رباتها محیط پیرامون را به وسیله سنسورها حس (Sense) میکنند و بر اساس آنها رفتارهایی از خود نشان میدهند که درخور محیط باشد.
رباتها در انواع و اندازههای مختلفی ساخته میشوند تا بتوانند وظایف محول شده خاصی را انجام دهند. در اینجا انواع مهم رباتها معرفی شدهاند:
- رباتهای انسان نما (Humanoid Robots): رباتهایی هستند که شبیه به انسان ساخته شدهاند و کارهای انسان را تقلید میکنند. این رباتها قادر به انجام کارهایی مشابه انسان از قبیل راه رفتن، دویدن، شلیک کردن، پریدن و... هستند همچنین حالات چهره این رباتها نیز از حالات چهره انسان واقعی تبعیت میکند و با پیشرفت تکنولوژی، روز به روز این شباهتها نیز بیشتر و بهتر میشوند.
- رباتهای مستقل (Autonomous Robots): رباتهای مستقل، رباتهایی هستند که بدون هیچ نظارت و کنترلی قادر به انجام وظیفه محول شده هستند. این رباتها با استفاده از سنسورهای تعبیه شده در آنها محیط اطراف خود را به خوبی درک کرده و سپس با استفاده از الگوریتمهای مختلف و تجهیزات طراحی شده عمل مناسبی را انجام میدهد. رباتهای کاوشگر در سیارات دیگر و یا جاروبرقیهای هوشمند جزء این دسته از رباتها هستند.
- رباتهای از پیش برنامه ریزی شده (Pre-Programmed Robots): این دسته از رباتها برای کارهای ساده و تک بعدی اما به طور سریع و مداوم ساخته شدهاند. در حقیقت کارهای تکراری، ظریف و کارهایی که نیاز به دقت فراوانی دارند نیز به وسیله این دسته از رباتها قابل انجام هستند. بازوی رباتیک یکی از این موارد است. این بازوها میتوانند کارهای مختلفی از قبیل پیوند قطعات الکترونیکی، جوشکاری، اسمبل کردن و خیلی از موارد دیگر را در زمان کوتاه و با حداقل خطا انجام دهند.
- رباتهای قابل کنترل از راه دور (Teleoperated Robots): اگر دوران کودکی شیرینی را گذرانده باشید، احتمالا ماشینهای کنترلی یا پهپادهای کنترلی را به خاطر دارید، در حقیقت این وسایل به نوعی ربات محسوب میشوند؛ البته از نوع ساده آن. رباتهای قابل کنترل از راه دور که توسط شبکه های بی سیممعرفی شبکه های بی سیم - شبکه های حسگر بی سیم - وایرلس چیستاین صفحه شما را با شبکه های بی سیم و شبکه های حسگر بی سیم آشنا خواهد کرد و به بررسی انواع شبکه های بی سیم نیز میپردازد، همچنین توضیح خواهیم داد که وایرلس چیست هدایت میشوند، نوعی ربات نیمه مستقل محسوب میشوند که کنترل آن در دست انسان است. از این رباتها در موارد مختلفی استفاده میشود، به عنوان مثال پهپادهای نظامی که برای شناسایی مناطق مینگذاری شده استفاده میشود.
- رباتهای افزودنی (Augmenting Robots): این رباتها به بدن انسان افزوده میشود و هدف آن نیز انتساب ویژگی جدید به انسان است، بسایری از افراد به دلیل معلولیت یا نقص عضو نمیتوانند بسیاری از فعالیتها را انجام دهند. این رباتها با وصل شدن به بدن انسان کمک میکند تا فعالیتهایی که به هر دلیلی قادر به انجام آن نیست را انجام دهد. هر ساله پیشرفتهای چشمگیری در این حوزه ارائه میشود و اینطور که به نظر میرسد در آیندهای نه چندان دور، به یکی از رباتهای جداییناپذیر از زندگی انسانها تبدیل شوند.
در لیست زیر موارد مختلفی که از رباتها استفاده میشوند را مشاهده میکنید:
- در صنعت
- اکتشاف
- در زمینه کشاورزی
- عمل جراحی
- ربات اسباب بازی
- بهداشت و درمان
- ربات خدمتکار
- در زمینه انبار داری
- در بخشهای نظامی
- حمل و نقل و گردشگری
بینایی ماشین
از دیگر حوزههای هوش مصنوعی میتوان به بینایی ماشین یا Machine Vision اشاره کرد. بینایی ماشینبینایی کامپیوتر و کاربردهای آن چیست و چگونه کار میکند؟کامپیوتر ویژن یا بینائی کامپیوتر، در ارتباط با مدلسازی و تقلید از حس بینایی انسانی از طریق استفاده از نرمافزار یا سختافزار دیجیتالی میباشد. در این صفحه بینایی ماشین را بصورت کامل بررسی شده است. یک حوزه میان رشتهای است و علوم مختلفی را شامل میشود، از جمله این علوم میتوان به صنایع، برق و الکترونیک، علوم رایانه و مکانیک اشاره کرد. در واقع بینایی ماشین از مبانی علوم رایانه، تکنیکهای پردازش تصویر، مهندسی اپتیک و مهندسی مکانیک استفاده میکند و ارتباط نزدیکی با اتوماسین صنعتی دارد. این تکنولوژی بر اساس پردازش تصاویر دو بعدی کار میکند. به وسیله تجزیه و تحلیل پیرامون با دوربینهای قدرتمندی که عاملهای بینایی ماشین دارنده آنها هستند، میتوان دادههای تصویری یا همان Image Data را تولید و وارد کامپیوتر کرد. بینایی ماشین یکی از حوزههای رو به رشد حوزه هوش مصنوعی میباشد که کاربرد های مختلفی دارد.
کاربردهای بینایی ماشین
بینایی ماشین در صنایع مختلفی به طور مستقیم یا غیر مستقیم مورد استفاده قرار گرفته است که در اینجا به برخی از این صنعتها میپردازیم:
- استفاده از بینایی ماشین در صنعت: از بینایی ماشین در صنعت استفادههای مختلفی میشود. از جمله این کاربردها میتوان به کنترل و بررسی موارد اولیه، کنترل میزان کیفیت محصول، کنترل موجودی انبار، مدیریت سیستمهای امنیتی و تولید محصولات صنعتی در مقیاس بزرگ اشاره کرد.
- بینایی ماشین در حمل و نقل: شاید اگر خیلی به جزئیات توجه کرده باشید، متوجه این امر شده باشید که چراغهای راهنمایی رانندگی در موارد مختلف، عملکردهای مختلفی دارند (در میدانهای بزرگ) ممکن است چراغ قرمز 20 ثانیه شود و یا ممکن است تا 100 ثانیه هم طول بکشد و یا مثلا ناگهان سر یک عدد متوقف شود. مورد ملموستر اینکه در پرداخت عوارضیهای بین راهی شما دیگر شخصی را نمیبینید که در حال گرفتن عوارض باشد، بلکه همه مراحل به صورت خودکار انجام میشود. این تکنولوژیها با دارا بودن قابلیت تشخیص خودروها و پلاکها تمامی مراحل را به طور اتومات انجام میدهند؛ همچنین در پارکینگهای هوشمند، مجتمعهای تجاری، ورودی و خروجی سازمانها و تردد ماشینها و ثبت تخلفات رانندگی از بینایی ماشین استفاده میشود.
- هواشناسی: در سالهای ابتدایی که تصاویر ماهوارهای از کره زمین گرفته میشد، خبرگان هواشناسی با تحلیلهای مختلف از شرایط جوی، آب و هوا را پیش بینی میکردند که علاوه بر زمانبر بودن، اشکالات و خطاها و همچنین هزینههای زیادی را در بر داشت. امروزه با استفاده از بینایی ماشین میتوان در کوتاهترین مدت با کمترین هزینه و با دقت بالا آب و هوا را پیشبینی کرد.
- صنعت شهرسازی: با استفاده از تکنولوژی بینایی ماشین، قادر هستیم تا یک شهر را قبل از ساخته شدن به صورت دیجیتالی بازسازی کنیم، این کار به متخصصین این حوزه قبل از اجرای پروژه کمک بسیاری میکند؛ همچنین با استفاده از تصاویر هوایی بدست آمده از یک شهر در طول فرآیند انجام پروژه میتوان میزان گسترش و توسعه را مورد سنجش و بررسی قرار داد.
- استفاده از بینایی ماشین در مباحث مربوط به امنیت: از آنجایی که الگوی چشم و اثر انگشت هر انسان با دیگری متفاوت است، میتوان از هوش مصنوعی برای تشخیص این موارد استفاده کرد؛ به عنوان مثال فناوریهای تشخیص اثر انگشت در گوشیهای هوشمند و لپتاپها و یا ورودیهای شرکت و همچنین سیستم تشخیص افراد بر اساس نگاه آنها از فناوری بینایی ماشین استفاده میکنند.
- بینایی ماشین در صنعت کشاورزی و حوزه زراعی: سیستم بینایی ماشین قادر است تا فعالیتهایی نظیر پردازش تصویر از ارتفاع و در سطح زمین، تخمین خسارات وارد شده به محیط زیست و بسیاری از موارد دیگر را با دقت بالا انجام دهد. بنابراین ماشینهای درو میتوانند تا موقعیت صحیح محصولات کشاورزی را شناسایی کنند و بدون هرگونه آسیب رساندن به محصولات، فرآیندهای کشاورزی را انجام دهند. از موارد مهم دیگری که به وفور در صنعت کشاوری از آن استفاده میشود، تشخیص علفهای هرز یا گیاهان زائد و محصول برداشتی است که توسط بینایی ماشین تفکیک داده میشوند.
دیگر حوزه های هوش مصنوعی
از دیگر شاخههای هوش مصنوعی میتوان به موارد زیر اشاره کرد:
- سیستمهای خبره (Expert Systems)
- منطق فازی (Fuzzy Logic)
- پردازش زبان طبیعی (Natural Language Processing)
- ماشین واکنشی (Reactive Machine)
- مهندسی دانش (Knowledge Engineering)
- بازیابی هوشمند (Intelligent Retrieval)
همچنین این حوزهها میتوانند با یکدیگر نیز ادغام شوند.
برنامه نویسی هوش مصنوعی
برنامه نویسی در زمینه هوش مصنوعی طیف گستردهای از حوزهها را در بر میگیرد. از ایجاد نرمافزارهایی برای اجرای عملیات تشخیص الگوها با استفاده از یادگیری ماشین و تحلیل دادهها گرفته تا برنامه نویسی سیستمهای تعبیه شده در خودروهای خودران. همانند دیگر زمینههای مهندسی کامپیوتر (مثل برنامه نویسی وب، برنامه نویسی اندرویدبرنامه نویسی اندروید چیست؟این مقاله عالی توضیح داده که برنامه نویسی اندروید چیست؟ و چرا باید برنامه نویسی اندروید را یاد بگیریم؟ و روش های کسب درآمد برنامه نویسی اندروید را بررسی کرده و یا بازی) برای برنامه نویسی هوش مصنوعی هم زبان های برنامه نویسیزبان های برنامه نویسی چیست؟این مقاله عالی توضیح داده که زبان های برنامه نویسی چیست؟ و انواع زبان های برنامه نویسی و بهترین زبان برنامه نویسی برای شروع و پردرآمدترین آنها را معرفی کرده مختلف و متفاوت وجود دارد که هرکدام از آنها در موارد مختلف مورد استفاده قرار میگیرد و همچنین هرکدام دارای مزایا و معایب مختلفی هستند. در لیست زیر محبوبترین زبان های برنامه نویسی هوش مصنوعیزبان های برنامه نویسی هوش مصنوعیاین مقاله عالی به معرفی زبان های زبان های برنامه نویسی هوش مصنوعی پرداخته و بهترین زبان های برنامه نویسی برای هوش مصنوعی و درآمد این شغل را بررسی کرده آورده شده است:
- پایتونزبان برنامه نویسی پایتون چیست؟ – نحوه شروع و دلایل محبوبیتزبان برنامه نویسی پایتون (Python) چیست؟ این مقاله عالی به بررسی دلایل محبوبیت پایتون، موارد استفاده از پایتون و نحوه شروع به برنامه نویسی پایتون پرداخته
- لیسپ (Lisp)
- جاواجاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا یک زبان برنامه نویسی همه منظوره، مبتنی بر کلاس و شی گرا است که برای داشتن وابستگی های پیاده سازی کمتر طراحی شده است، زبان برنامه نویسی جاوا شبیه ++C است
- سی پلاس پلاسبرنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده
- Rزبان برنامه نویسی R چیست؟ کاربرد زبان برنامه نویسی r چیست؟این مقاله عالی به توضیح زبان برنامه نویسی R (آر) پرداخته، همچنین به بررسی محیط نرم افزاری زبان R، مزایا و معایب زبان R و کاربردهای زبان R پرداخته است
- جولیا (Julia)
- پرولاگ (Prolog)
- متلب (Matlab)
هوش مصنوعی با پایتون
زبان برنامه نویسی پایتون از دیرباز یکی از محبوبترین زبانها جهت برنامه نویسی هوش مصنوعی بوده است. به دلیل ساده بودن سینتکسها، کم حجم بودن و راهاندازی سریع زبان و داشتن پکیجهای بسیار زیاد و متنوع، هر روزه بر تعداد کاربران این زبان افزوده میشود. در این قسمت کتابخانه های پایتونکتابخانه های پایتون چیست – معرفی کتابخانه های مهم پایتوناین مقاله عالی به معرفی کتابخانه های پایتون پرداخته و کتابخانه های مهم پایتون و همچنین مهمترین کتابخانه های پایتون برای علم داده را معرفی کرده معروف جهت کدنویسیکدنویسی چیست؟ – کد نویسی یعنی چهاین مقاله عالی به بررسی این پرداخته که کد نویسی چیست و مفهوم کد نویسی را بررسی کرده، همچنین تفاوت کدنویسی و برنامه نویسی و کاربرد های کدنویسی را بررسی کرده برای هوش مصنوعی و تجزیه و تحلیل داده را مرور میکنیم. با استفاده از کتابخانه Scikit-Learn میتوان الگوریتم های هوش مصنوعیالگوریتم های هوش مصنوعی چیست اند و چگونه کار میکنند؟این صفحه عالی به معرفی انواع الگوریتم های هوش مصنوعی پرداخته و توضیح داده که هر یک از الگوریتم های هوش مصنوعی چگونه کار میکنند و چه کاربردی دارند مانند Classification و Regression را پیادهسازی کرد. کار کردن در زمینه Deep Learning یا یادگیری عمیق به وسیله کتابخانههای محبوب TensorFlow، Keras و Caffe قابل انجام است؛ همچنین با استفاده از کتابخانه هایی مانند NumPy، SciPy و Pandas میتوان به ساخت و پردازش انواع آرایهآموزش آرایه در ساختمان داده به زبان ساده و از 0 تا 100در این مقاله موارد زیر بررسی شده است : 1- آرایه چیست 2- انواع اندیس گذاری در آرایه 3- انواع آرایه 4- محاسبه آدرس در آرایه 5- محاسبه شماره در آرایه 6- آرایه در برنامه نویسی 7- مزایای استفاده از آرایهها، تجزیه و تحلیل دادهها و بسیاری از موارد دیگر پرداخت. اطلاعات آنالیز شده و یا نمودارها را نیز میتوان به وسیله کتابخانه Matplotlib به حالت بصری درآورد. کتابخانههای دیگری هم وجود دارند که در زمینه هوش مصنوعی به برنامه نویسان کمک میکنند مانند SpaCy، NTLK، SimpleAI و...
هوش مصنوعی با زبان R
زبان برنامه نویسی R که مخصوص محاسبات و تحلیلهای آماری ساخته شده است، یکی از زبان هایی است که در حوزه هوش مصنوعی کاربرد فراوانی دارد، به خصوص برای کاربردهای یادگیری ماشین. سینتکسهای ساده و کوتاه شده، داشتن کتابخانههای فراوان برای ترسیم نمودارها و فرمولهای آماری، پشتیبانی از کتابخانههای محبوب مانند TensorFlow، Keras و MXNet باعث شده است تا بسیاری از برنامه نویسان به سمت این زبان سوق پیدا کنند.
هوش مصنوعی با جاوا
وقتی هدف برنامه نویس هوش مصنوعی تحلیل و استخراج دادهها است و یا تنها میخواهد یک الگوریتم یادگیری را پیادهسازی کند، زبانهایی مثل پایتون و R بسیار مفید واقع میشوند اما ممکن است هدف از برنامه نویسی هوش مصنوعی، ایجاد یک برنامه و نرم افزار باشد که قرار است بارها توسط افراد مختلف (و مشتریان) اجرا شود. این نرمافزارها باید از عملکرد سریعی برخوردار باشند بنابراین استفاده از یک زبان کامپایلری مثل جاوا کار عاقلانهتری به نظر میرسد تا استفاده از یک زبان مفسری.
زبان جاوا دارای ویژگیهای متعددی میباشد که مهمترین آنها در لیست زیر آمده است:
- سرعت بالا به دلیل کامپایلری بودن
- چند سکویی یا Multiplatform بودن به دلیل استفاده از ماشین مجازی جاوا (JVM)
- داشتن کتابخانههای متعدد
- دارا بودن پشتهساختمان داده پشته ⚡️ پشته چیست؟ کاربرد پشته در ساختمان دادهاین مقاله عالی توضیح داده که پشته چیست و کاربرد پشته در ساختمان داده چیست، همچنین نحوه کارکرد پشته، پیاده سازی پشته و عملیات های پشته را معرفی کرده های اپن سورس کلان داده
- عیبیابی سریع، قابل حمل بودن، مدیریت حافظهمدیریت حافظه در برنامه نویسی ⚡️ سه سطح مهم در مدیریت حافظهاین مقاله عالی سه سطح مهم در مدیریت حافظه یعنی مدیریت حافظه در سطح سختافزار، مدیریت حافظه در سطح سیستم عامل و مدیریت حافظه در سطح برنامه را معرفی کرده و تطبیقپذیری
همین ویژگیهای مثبت زبان جاوا باعث شده تا برای توسعه بسیاری از کاربردهای هوش مصنوعی از این زبان استفاده شود. مانند تجزیه و تحلیل دادهها، یادگیری عمیق، یادگیری ماشین، پردازش زبان طبیعی و بسیاری از کاربردهای دیگر.
درس هوش مصنوعی در کنکور ارشد
در کنکور ارشد کامپیوتر 1401 تمامی گرایشها، درسهای یکسانی دارند اما با ضرایب متفاوت. کل دروس به 2 بخش عمومی و تخصصی تقسیم میشوند. بخشی عمومی شامل زبان با ضریب 1 و مجموعه ریاضیات یعنی ریاضی 1، ریاضی 2، آمار و ریاضیات گسسته با ضریب 2 است.
بخش تخصصی شامل 11 درس است که به 4 مجموعه درسی تقسیم شده است:
- مجموعه اول: نظریه زبان و سیگنال
- مجموعه دوم: ساختمان داده، الگوریتم و هوش مصنوعی
- مجموعه سوم: مدار منطقی، معماری کامپیوترمعماری سیستم های کامپیوتری چیست، معرفی رشته معماری کامپیوتر یکی از گرایش های ارشد مهندسی کامپیوتر گرایش معماری سیستم های کامپیوتری است، در این صفحه گرایش معماری سیستم های کامپیوتری توسط اساتید صنعتی شریف معرفی شده. و الکترونیک دیجیتال
- مجموعه چهارم: سیستم عاملسیستم عامل چیست به زبان ساده، چرا باید از OS استفاده کنیم؟این مقاله عالی به معرفی سیستم عامل (Operating System|OS) به زبان ساده پرداخته، همچنین بررسی کرده که چرا باید از سیستم عامل استفاده کنیم ، شبکه های کامپیوتریجامعترین آموزش درس شبکه های کامپیوتریدرس شبکه های کامپیوتری یکی از مهمترین و بنیادیترین دروس رشته کامپیوتر است، با توجه به اینکه اینترنت امروزی بزرگترین سیستم مهندسی ساخت دست بشر در تمام طول تاریخ است، آشنایی با شبکههای کامپیوتری برای تمامی علاقهمندان و دانشجویان رشته کامپیوتر الزامی است، در این راستا در این صفحه به معرفی شبکههای کامپیوتری پرداخته شده است و پایگاه دادهدرس پایگاه داده ⚡️ پایگاه داده کنکور ارشد کامپیوتر و آی تیاین مقاله عالی توضیح داده که درس پایگاه داده چیست و چه کاربردهایی دارد و منابع و سرفصل های درس پایگاه داده در آزمون کنکور ارشد کامپیوتر و آی تی را بررسی کرده
مجموعه درس دوم که شامل 3 درس ساختمان داده، الگوریتم و هوش مصنوعی است در گرایشهای رایانش امنرایانش امن چیست، بررسی رشته رایانش امن توسط اساتید صنعتی شریفرشته رایانش امن بطور کامل در این صفحه معرفی شده است. همین طور در مورد بازار کار رایانش امن و چارت دروس گرایش رایانش امن بطور کامل بحث شده است، شبکههای کامپیوتری، معماری کامپیوتر و علوم و فناوری شبکه، دارای ضریب 3 است و در گرایش هوش مصنوعی، نرم افزار، بیوانفورماتیکگرایش بیوانفورماتیکبیوانفورماتیک از رشتههای نو، جذاب و میان رشتهای است، با توجه به اطلاعات کمی که در این زمنیه وجود دارد در این مقاله سعی کردهایم هر آنچه در مورد بیوانفورماتیک باید بدانید را به شما بگوییم، با این مقاله کامل و جذاب با ما همراه باشید ، علوم دادهمعرفی رشته علوم داده، علم داده (Data Science) چیستدر این مطلب به معرفی رشته رشته علوم داده در مقطع ارشد پرداخته شده است، الگوریتم و محاسباتگرایش الگوریتم و محاسباتاین صفحه به معرفی گرایش الگوریتم و محاسبات رشته کامپیوتر پرداخته است و قرآن کاوی رایانشی دارای ضریب 4 میباشد. برای دیدن ضرایب بقیه درسها و گرایشها، به صفحه ی دروس مورد آزمون در کنکور ارشد کامپیوتر و ضرایب آندروس آزمون و ضرایب آنها در کنکور ارشد کامپیوتر و آی تیقبل از شروع مطالعه برای کنکور ارشد رشته کامپیوتر لازم است تا از دروس مورد آزمون، اهمیت هر کدام و همچنین ضرایب آنها مطلع باشید تا بتوانید به صورت هوشمندانه برنامه ریزی کرده و بهترین نتیجه را کسب کنید. این صفحه راهنمای شما در موارد ذکر شده خواهد بود. رجوع کنید. تعداد تستهایی که از درس هوش مصنوعی در آزمون کنکور مطرح میشود شامل 8 تست در کنکور مهندسی کامپیوتر و 6 تست در مهندسی فناوری اطلاعات میباشد. با توجه به تعداد سوالات و ضریب بالای این درس، میتوان گفت یکی از دروس مهم کنکور کارشناسی ارشد به حساب میآید.
فیلم های آموزشی درس هوش مصنوعی
همانطور که قبلتر بیان شد، درس هوش مصنوعی اهمیت بالایی دارد بنابراین نیازمند یک آموزش کامل با بیان ساده و منسجم است تا دانشجویان بتوانند امتیاز بالایی از این درس در کنکور کسب کنند. به دلیل حجیم و البته چالش برانگیز بودن این درس، منابع کامل و کافی مناسبی برای این درس وجود ندارد، به خصوص اینکه در اکثر دانشگاههای ایران، با توجه به کمبود وقت، تمامی فصول هوش مصنوعی به طور کامل پوشش داده نمیشود بنابراین با توجه به نیازهای دانشجویان گرامی، مجموعه کاملی از ویدیوهای آموزشی برای درس هوش مصنوعی گردآوری شده تا هم نیازهای کنکور شما را برطرف سازد و هم اگر در آینده تمایل به ادامه این رشته پیدا کردید، این مجموعه آموزشی بتواند پایههای علم شما را مستحکم کند. ویدیو های آموزشی این مجموعه به صورت کاملا شیوا و صریح بیان شده است و از 0 تا 100 درس هوش مصنوعی را پوشش میدهد.
معرفی دوره درس و حل تست و سوالات هوش مصنوعی
در اینجا مشخصات پکیج قرار میگیرد.
بهترین منابع برای درس هوش مصنوعی در آزمون کنکور ارشد کدامند؟
با توجه به اهمیت بالای درس هوش مصنوعی در آزمون کنکور ارشد، تعداد کتابهای تالیف شده و آموزشهای ویدیویی ساخته شده بسیار زیاد است و ممکن است داوطلبان کنکور را سردرگم کند. از آنجایی که مرجع درس هوش مصنوعی در دانشگاه و آزمون کنکور ارشد، کتاب Artificial Intelligence: A Modern Approach نوشته نورویگ و راسل است، در نتیجه کتب فارسی همگی ترجمه این کتاب میباشند و میتوان گفت بیش از 90 درصد این کتب چه از نظر تدریس و چه از نظر تستها شبیه به هم هستند. اما اگر بخواهیم با توجه به رضایتمندی داوطلبان، کتابی را انتخاب کنیم، کتاب هوش مصنوعی راسل ترجمه دکتر هشام فیلی میتواند گزینه مناسبی باشد. مشکلی که وجود دارد این است که تنها خواندن کتاب و یا تنها مشاهده ویدیو ممکن است کافی نباشد و بهتر است حتما در کنار کتاب درسی، ویدیوهای آموزشی نیز تهیه کنید. ویدیوهای درس هوش مصنوعی کنکور کامپیوتر با بیانی ساده و از 0 تا 100 درس هوش مصنوعی را به طور کامل پوشش داده است. بنابراین اگر قصد کسب رتبه برتر در آزمون کنکور ارشد را دارید، ویدیوهای این مجموعه به شما پیشنهاد میشود.
اهمیت درس هوش مصنوعی در کنکور ارشد چقدر است؟
درس هوش مصنوعی یکی از دروس مهم آزمون کنکور به حساب میآید. ضریب این درس در گرایشهای مختلف متفاوت است. در گرایشهای رایانش امن، شبکههای کامپیوتری، معماری کامپیوتر و علوم و فناوری شبکه، این درس دارای ضریب 3 است و در گرایش هوش مصنوعی، نرمافزار، بیوانفورماتیک، علوم داده، الگوریتم و محاسبات و قرآن کاوی رایانشی دارای ضریب 4 میباشد.
چند تست از درس هوش مصنوعی در آزمون کنکور ارشد مطرح میشود؟
با توجه به تغییراتی که در آزمون کنکور ایجاد میشود به طور دقیق نمیتوان در این مورد نظر داد اما اگر بخواهیم آخرین آزمون کنکور را مدنظر قرار دهیم میتوان گفت تعداد تستهایی که از درس هوش مصنوعی در آزمون کنکور مطرح میشود شامل 8 تست در کنکور مهندسی کامپیوتر و 6 تست در مهندسی فناوری اطلاعات میباشد.
کامپیوتر شریف
بیشتر دانشآموزانی که در رشتههای نظری ریاضی فیزیک یا دانشآموزان فنی حرفهای رشته کامپیوتر که در حال تحصیل هستند مایلاند برای تحصیلات تخصصی خود در یکی از بهترین رشتههای مهندسی مانند مهندسی کامپیوترمهندسی کامپیوتر چیست؟ معرفی رشته کامپیوتر توسط اساتید شریفاین صفحه به معرفی کامل رشته کامپیوتر، اعم از دروس رشته کامپیوتر، درآمد رشته کامپیوتر، شغل های رشته کامپیوتر، گرایش ها و زیر شاخه های رشته کامپیوتر پرداخته است ادامه تحصیل دهند؛ زیرا این رشته بازار کار فوقالعادهای در سراسر دنیا دارد و فارغالتحصیلان این رشته از دانشگاههای تاپ کشور در بهترین مناطق دنیا مشغول به کارند. یکی از بهترین دانشگاههای مطرح در ایران و سطح جهان دانشگاه صنعتی شریف یا بهاختصار شریف است که با اساتید زبده و مدرکهای معتبر آینده دانشجویان خود را تضمین میکند، در ادامه این نوشتار بیشتر به بحث مهندسی کامپیوتر شریف میپردازیم همچنین چند کارنامه قبولی مهندسی کامپیوتر 1401 در شریف را آنالیز میکنیم تا متقاضیان عزیز درک درستتری از نحوه انتخاب رشته و قبولی در این دانشگاه را داشته باشند، لذا با ما همراه باشید و مطالب جذاب ادامه را از دست ندهید.
دانشگاه شریف
دانشگاه صنعتی شریف یکی از بزرگترین دانشکدههای مهندسی در جمهوری اسلامی ایران است. این دانشگاه در سال 1345 با نام دانشگاه صنعتی آریامهر تأسیس شد و در آن زمان 54 عضو هیئتعلمی و در مجموع 412 دانشجو که با آزمون سراسری انتخاب شدند را داشت. در سال 1359 این دانشگاه به نام کنونی خود یعنی دانشگاه صنعتی شریف تغییر نام داد. اکنون در مجموع دارای 300 عضو هیئتعلمی تماموقت، تقریباً 430 عضو هیئتعلمی پارهوقت و تعداد دانشجویان شریف در حدود 12000 نفر است.
رتبه دانشگاه شریف
طبق آمار QS World University Rankings دانشگاه شریف یکی از برترین دانشگاههای جهان محسوب میشود و تا سال 2024 در رتبهبندی 334 دنیا قرار میگیرد.
مهندسی کامپیوتر در دانشگاه شریف
رشته مهندسی کامپیوتر یکی از رشتههای زیر مجموعه علوم ریاضی است که در بین رشتههای پرمتقاضی در سراسر جهان شناخته میشود، قبولی در رشته مهندسی کامپیوتر فقط از یک طریق امکانپذیر است آن هم شرکت در کنکور سراسری ریاضی فیزیک و کسب حداقل درصدهای و حداقل رتبه قبولی است که در ادامه کارنامه آخرین نفرات قبول شده این دانشگاه آورده شده است و شما میتوانید این کارنامهها را بررسی کنید تا دید درستتری نسبت به قبولی دانشگاه شریف بیابید.
نکته لازم به ذکر دیگر این است که مهندسی کامپیوتر در دانشگاه شریف سه مقطع دارد که عبارتاند از:
- کارشناسی «140 واحد و بدون گرایش»
- کارشناسی ارشد «لازم به آوردن حداقل رتبه و درصد در کنکور ارشد کامپیوتر»
عنوان برنامه طول دوره کارشناسی ارشد الگوریتمها و محاسبات ۲ سال کارشناسی ارشد رایانش امن ۲ سال ۲ سال کارشناسی ارشد هوش مصنوعی ۲ سال کارشناسی ارشد علم داده ۲ سال کارشناسی ارشد بیوانفورماتیک ۲ سال کارشناسی ارشد نرمافزار ۲ سال کارشناسی ارشد معماری کامپیوتر ۲ سال کارشناسی ارشد شبکههای کامپیوتری ۲ سال - و دکتری «کنکور دکتری و مصاحبه»
عنوان برنامه طول دوره دکترای نرمافزار 4 سال دکترای معماری کامپیوتر 4 سال دکترای هوش مصنوعی 4 سال دکتری الگوریتم و محاسبات 4 سال دکتری شبکه های کامپیوتری 4 سال دکتری رایانش امن 4 سال
لذا به علت نداشتن مقطع کارشناسی ناپیوسته مهندسی کامپیوتر در شریف ارائه نشده است؛ بنابراین دانشآموزان فنی حرفهای و هنرستانها نمیتوانند در این دانشگاه پذیرش شوند. برای کسب اطلاعات بیشتر و آشنایی با دانشکده مهندسی کامپیوتر شریف میتوانید به سایت دانشکده کامپیوتر دانشگاه شریف مراجعه کنید.
میانگین درصد و رتبه موردنیاز جهت قبولی در رشته مهندسی کامپیوتر در دانشگاه دولتی صنعتی شریف در سالهای 1400 و 1401
در ادامه این نوشتار به میانگین درصدهای قبولیهای دانشگاه شریف در دو سال متمادی 1400 و 1401 میپردازیم که باتوجهبه جداول شاید فکر کنید اندکی قبولی 1401 نسبت به 1400 در دانشگاه شریف بهبودیافته اما این احتمال برای 1402 و 1403 خیلی کم است که همچنان رتبههای بالاتر بخواهند پذیرش شوند؛ زیرا هر ساله سطح متقاضیان نسبت به سالهای قبل و بعد خود متفاوت است، حتی ممکن است ظرفیت دانشگاه برای رشته مهندسی کامپیوتر و سهمیهها نیز در هر سال متفاوت باشد.
میانگین درصد و رتبه موردنیاز جهت قبولی مهندسی کامپیوتر دانشگاه دولتی صنعتی شریف سال 1401
میانگین رتبه و درصدهای لازم برای کنکور کامپیوتر دانشگاه شریف | |
---|---|
نام درس | میانگین درصد موردنیاز |
ریاضی | 60 |
فیزیک | 90 |
شیمی | 60 |
میانگین رتبه | |
منطقه 1 | 1-55 |
منطقه 2 | 1-31 |
منطقه 3 | 1-26 |
میانگین درصد و رتبه موردنیاز جهت قبولی مهندسی کامپیوتر دانشگاه دولتی صنعتی شریف سال 1400
میانگین رتبه و درصدهای لازم برای کنکور کامپیوتر دانشگاه شریف | |
---|---|
نام درس | میانگین درصد موردنیاز |
ریاضی | 60 |
فیزیک | 90 |
شیمی | 70 |
ادبیات | 80 |
عربی | 90 |
معرف | 90 |
زبان انگلیسی | 90 |
میانگین رتبه | |
منطقه 1 | 1-42 |
منطقه 2 | 1-18 |
منطقه 3 | 1-3 |
آخرین رتبههای قبولی رشته مهندسی کامپیوتر روزانه در دانشگاه صنعتی شریف در مناطق یک و دو و سه در سال 1401
در ادامه سه کارنامه که مربوط به آخرین نفرهای قبول شده دانشگاه شریف در رشته مهندسی کامپیوتر 1401 است آورده شده است، توجه داشته باشید که درصدهای کارنامهها حدودی است و منظور از شهر، شهر متقاضی قبول شده است.
آخرین رتبه قبولی در رشته مهندسی کامپیوتر روزانه دانشگاه دولتی صنعتی شریف در منطقه 1
اولین کارنامه قبولی مهندسی کامپیوتر روزانه دانشگاه دولتی صنعتی شریف تهران منطقه 1 | |||||||||
---|---|---|---|---|---|---|---|---|---|
ادبیات | شیمی | معارف | زبان | عربی | فیزیک | ریاضی | رتبه کشوری | رتبه در منطقه 1 | شهر |
84 | 47 | 90 | 78 | 90 | 100 | 96 | 8 | 6 | تهران |
84 | 66 | 80 | 89 | 90 | 95 | 89 | 36 | 25 | تهران |
71 | 59 | 67 | 87 | 72 | 86 | 91 | 135 | 92 | تهران |
آخرین رتبه قبولی در رشته مهندسی کامپیوتر روزانه دانشگاه دولتی صنعتی شریف در منطقه 2
دومین کارنامه قبولی مهندسی کامپیوتر روزانه دانشگاه دولتی صنعتی شریف تهران منطقه 2 | |||||||||
---|---|---|---|---|---|---|---|---|---|
شیمی | عربی | زبان | ادبیات | ریاضی | فیزیک | معارف | رتبه کشوری | رتبه در منطقه 2 | شهر |
89 | 90 | 95 | 79 | 85 | 90 | 100 | 12 | 2 | همدان |
68 | 79 | 89 | 74 | 78 | 92 | 84 | 109 | 29 | کرج |
60 | 59 | 69 | 79 | 85 | 84 | 86 | 152 | 43 | سمنان |
70 | - | - | - | 59 | 88 | - | 67 | 21 | تهران |
آخرین رتبه قبولی در رشته مهندسی کامپیوتر مقطع روزانه در دانشگاه دولتی صنعتی شریف در منطقه 3
سومین کارنامه قبولی مهندسی کامپیوتر دانشگاه دولتی صنعتی شریف تهران منطقه 3 | |||||||||
---|---|---|---|---|---|---|---|---|---|
ادبیات | فیزیک | معارف | عربی | ریاضی | زبان | شیمی | رتبه کشوری | رتبه در منطقه 3 | شهر |
95 | 88 | 90 | 100 | 90 | 84 | 84 | 10 | 1 | شیروان |
84 | 88 | 87 | 96 | 79 | 77 | 56 | 123 | 5 | بجستان |
66 | 73 | 80 | 86 | 53 | 95 | 48 | 829 | 47 | پاکدشت |
جمعبندی
امیدواریم از این نوشتار هم مانند سایر نوشتارهای وبلاگ کنکور کامپیوتر مفید واقع شده باشد، برای قبولی مهندسی کامپیوتر دانشگاه شریف هر لحظه و هر جا کنار شما خواهیم بود، شما عزیزان برای کسب اطلاعات بیشتر و دورههای کنکور کامپیوتر مؤسسه ما میتوانید از طریق تماس با مشاورین زبده ما در تماس باشید و مشاوره رایگان دریافت کنید.
آیا قبولی در کارشناسی مهندسی کامپیوتر دانشگاه شریف نیاز به کنکور دارد؟
بله صددرصد، متقاضیان عزیز بایستی با قبولی در کنکور سراسری ریاضی فیزیک بتوانند حداقل رتبه لازم را که در متن مقاله به آن اشاره شده است کسب نمایند و هیچ راه دیگری برای قبولی در این دانشگاه وجود ندارد.
آیا کارشناسی ارشد مهندسی کامپیوتر در دانشگاه شریف دارای مصاحبه تخصصی است؟
در سالیان 1400 و قبلتر مصاحبه فقط برای دوره دکتری شریف انجام میشد؛ اما اکنون گویا دانشگاه شریف برای دانشجویان ارشد آن هم در یک سری رشتههای خاص مصاحبه تخصصی برگزار میکند.
اعتبار مدرک دانشگاه شریف چقدر است؟
باتوجهبه رتبهبندی ذکر شده در متن مقاله، تقریباً کل کشورهای دنیا مدرک دانشگاه شریف را یکی از معتبرترین مدارک دانشگاهی برمیشمارند.
رشته آی تی دانشگاه شریف(به نویسنده گفتم اضافه کنه)
رشته آی تیمعرفی فناوری اطلاعات (IT) - 7 دلیل برای انتخاب رشته آی تی در دانشگاهآی تی چیست و چگونه پس از ظهور توانست در مدت فقط 20 سال تمام دنیا را فرا بگیرد و اکثر پول دنیا را ببلعد و پرطرفدارترین و پر درآمدترین مشاغل دنیا را در بر گیرد، در این صفحه به بررسی این موضوعات پرداخته شده یا فناوری اطلاعات هم مانند رشته مهندسی کامپیوترمهندسی کامپیوتر چیست؟ معرفی رشته کامپیوتر توسط اساتید شریفاین صفحه به معرفی کامل رشته کامپیوتر، اعم از دروس رشته کامپیوتر، درآمد رشته کامپیوتر، شغل های رشته کامپیوتر، گرایش ها و زیر شاخه های رشته کامپیوتر پرداخته است یکی از رشتههای پرطرفدار امروزی است که هر چند مانند کامپیوتر شناخته شده نیست؛ اما بسیار عالی و پرکاربرد است. در این نوشتار از کنکور کامپیوتر ابتدا اینکه رشته آی تی چیست و چه تفاوتی با کامپیوتر دارد را شرح میدهیم سپس به سراغ رشته آی تی در یکی از بهترین دانشگاه های ایرانمعرفی و بررسی بهترین دانشگاه های ایرانتقریبا تمامی دانشجویان و دانشآموزان در دوران تحصیل و به خصوص در هنگام انتخاب رشته میخواهند بدانند که بهترین دانشگاه های ایران به ترتیب چه دانشگاههایی هستند، برای پاسخ به این پرسش در این صفحه رنکینگ دانشگاه های ایران در جهان را از نگاه نظامهای رتبه بندی معتبر بررسی شده است یعنی دانشگاه صنعتی شریف تهران میرویم و درصدها و رتبههای لازم را برای تحصیل آی تی شریف عنوان میکنیم، در آخر چندین کارنامه مربوط به قبولیهای آی تی شریف را تحلیل و بررسی خواهیم کرد؛ پس اگر متقاضی قبولی در رشته آی تی دانشگاه شریف هستید، اطلاعات مفید این صفحه را به هیچ عنوان از دست ندهید.
رشته آی تی چیست؟ و تفاوت آن با مهندسی کامپیوتر چیست؟
رشته آی تی IT خلاصه شدهی عبارت Information Technology یعنی فناوری اطلاعات، فارغالتحصیلان و کارشناسان این رشته باید بکوشند در بخش فناوری سازمانها و یا شرکتها فعالیت کنند تا اطلاعات را مدیریت کنند. برخلاف مهندسین کامپیوتر که باید یکی از گرایشات نرمافزار یا سختافزار را انتخاب کنند، متخصصان آی تی باید در هر دو حوزه نرمافزار و سخت افزار کامپیوترسخت افزار چیست - بررسی اجزای اصلی سخت افزار کامپیوتردر این صفحه بررسی شده که سخت افزار چیست و سخت افزار کامپیوتر به زبان ساده معرفی شده است، همچنین به بررسی اجزای اصلی سخت افزار کامپیوتر پرداخته شده است فعالیت داشته باشند؛ یعنی با یکسری قطعات سخت افزاری مانند روترها، سوئیچها، کابلها، کامپیوترکامپیوتر چیست؟ ⚡️ کامپیوتر چیست به زبان سادهاین مقاله عالی توضیح داده که کامپیوتر چیست و چه کاربردی دارد و همه چیز درباره کامپیوتر از جمله فواید کامپیوتر و تعریف کامپیوتر و اجزای آن را بیان کرده است ها کار کنند و یک سری تنظیمات نرمافزاری نیز انجام دهند. در واقع با گسترش فناوریها و تکنولوژی دادههای زیادی در سرتاسر دنیا بهوجود آمد که به آنها بیگ دیتابیگ دیتا (big data) یا کلان داده چیست؟ کاربردهای بیگ دیتااین صفحه فوق العاده به معرفی 0 تا 100 بیگ دیتا (big data) یا همان کلانداده پرداخته. بطور خلاصه بیگ دیتا به تحلیل و پردازش حجم زیادی از داده ها میپردازد میگویند، اکثر سازمانها برای مدیریت این دادهها نیاز به متخصصان آی تی دارند، یک کارشناس آی تی باید بکوشد علاوه بر این اطلاعات حجیم، کامپیوترهای سازمان و پایگاه دادهپایگاه داده چیست؟ – انواع، مفاهیم و کاربردهاپایگاه داده چیست؟ این مقاله به بررسی این موضوع و همچنین انواع پایگاه داده، کاربردهای پایگاه داده، محبوب ترین پایگاه های داده و اجزای اصلی پایگاه داده پرداخته های را هم مدیریت و ساماندهی کند. در کشور ما رشته آی تی اکثر در مقطع لیسانس ارائه میشود یا حتی در بعضی از دانشگاههای سر فصلهای آن بسیار شبیه به علوم کامپیوترعلوم کامپیوتر یا کامپیوتر ساینس چیستدر این صفحه به بررسی و موشکافی رشته علوم کامپیوتر اعم از بررسی بازار کار، گرایشها، دروس و چارت درسی این رشته، میزان درآمد و حقوق فارغ التحصیلان این رشته و ادامه تحصیل در این رشته پرداخته شده است. است.
در کل سه دانشگاه پیشرو در زمینه آی تی در ایران است:
- دانشگاه صنعتی شریف
- دانشگاه امیرکبیر
- دانشگاه تهران
که آی تی را در یک رشته مجزا با سر فصلهای مجزا و در سه مقطع:
- کارشناسی
- کارشناسی ارشد
- دکتری
ارائه میدهند.
رشته آی تی در دانشگاه شریف
دانشگاه شریف یکی از بهترین دانشگاههای ایران و البته جهان است که به داشتن اساتید برتر، دانشجویان فعال، تحقیقات پیشرفته و گسترده، همچنین کیفیت آموزشی بالاتر از حد استاندارد معروف است، این دانشگاه طبق آمار مرکز QS World University Rankings تا سال 2024 رتبه 334 بین کل دانشگاههای جهان را کسب خواهد کرد. رشته آی تی از سال 1380 در دانشگاه صنعتی شریف در دو مقطع کارشناسی و کارشناسی ارشد ارائه میشود و در واقع یکی از اولین دانشگاههای ایران است که رشته آی تی را ارائه کرده است.
سرفصل درسهای رشته آی تی و تعداد واحدها:
- تعداد کل واحدها: 140تا
- دروس عمومی: 22 واحد
- دروس پایه: 20 واحد
- دروس اصلی: 59 واحد
- دروس انتخابی: 8 واحد
کارشناسی آی تی دانشگاه شریف - رتبه و درصدهای لازم
قبولی در مقطع کارشناسی در رشته آی تی دانشگاه شریف مثل قبولی مهندسی کامپیوتر شریف رتبه و درصد میطلبد (با اندکی اختلاف) چون این دو رشته بسیار نزدیک به هم هستند حتی مقطع ارشد فناوری اطلاعات میتوان با مهندسی کامپیوتر قبول شد. برای قبولی رشته آی تی دانشگاه شریف بهطور میانگین با توجه به منطقه یک یا دو یا سه بودن درصدهای زیر لازم است.
منطقه یک
قبولی برای داوطلبان منطقه یک به طور میانگین نیازمند درصدهای زیر است:
نام درس | درصد |
---|---|
ادبیات فارسی | 80% |
شیمی | 43% |
ریاضیات | 94% |
فیزیک | 100% |
معارف | 89% |
زبان | 75% |
عربی | 94% |
منطقه دو
قبولی برای داوطلبان منطقه دو به طور میانگین نیازمند درصدهای زیر است:
نام درس | درصد |
---|---|
ریاضیات | 70% |
فیزیک | 80% |
معارف | 95% |
زبان | 90% |
ادبیات فارسی | 64% |
عربی | 80% |
شیمی | 40% |
منطقه سه
قبولی برای داوطلبان منطقه سه به طور میانگین نیازمند درصدهای زیر است:
نام درس | درصد |
---|---|
ادبیات فارسی | 66% |
زبان | 91% |
شیمی | 45% |
عربی | 74% |
معارف | 97% |
ریاضیات | 66% |
فیزیک | 90% |
کارشناسی ارشد آی تی دانشگاه شریف - رتبه و درصدهای لازم
قبولی در مقطع ارشد آی تی دیگر مانند کارشناسی نیازمند درصدهای خوب و یا رتبههای تک رقمی نیست، هر چند دروس به مراتب تخصصی و سختتر از دروس دبیرستان هستند و بیشتر مختص به رشته کامپیوتر هستند اما با توجه به کاهش به یکباره متقاضیان شرایط کمی آسانتر از مرحله کارشناسی آی تی در دانشگاه شریف است. در ارشد آی تی دانشجویان میتوانند هم از سمت کارشناسی مهندسی کامپیوتر و هم از سمت رشته آی تی کنکور سراسری ارشد را طی کنند و بعد از کسب درصد و رتبه لازم در دانشگاه شریف مشغول به تحصیل شوند. در ادامه توجه شما را به کارنامه قبولی آی تی دانشگاه شریف در مقطع ارشد جلب میکنیم:
این کارنامه مربوط به قبولی یک داوطلب با سهمیه پنج درصدی در آزمون ارشد 1400 است که رشته آی تی شریف پذیرفته شدهاند اگر به درصدها توجه کنید میبیند که با سطح متوسط رو به بالا زدن در آزمون ارشد میتوان بهراحتی قبول شد؛ فقط نکته حائز اهمیت این جا بحث سهمیهها است که افراد با سهمیه آزاد باید رتبهها و درصدهای بهتری کسب کنند.
جمعبندی
امیدواریم این نوشتار هم مانند سایر نوشتارهای بلاگ کنکور کامپیوتر برای شما مفید واقع شده باشد، اگر به دنبال تحصیل در دانشگاهها و رشتههای تاپ در ایران یا خارج از کشور مانند آی تی دانشگاه شریف هستید، موسسه کنکور کامپیوتر در هر لحظه کنار شما خواهد بود تا رتبههای بهتری کسب کنید برای کسب اطلاعات بیشتر در این زمینه میتوانید از طریق مشاوره تلفنی رایگان با موسسه ما در ارتباط باشید.
آیا رشته آی تی بهتر است یا مهندسی کامپیوتر؟
رشته آی تی تقریباً جدیدتر از مهندسی کامپیوتر است؛ اما از لحاظ بهتری این دو هیچ برتری نسبت به هم ندارند، بسته به علایق دانشجویانم دارد که کدام را برگزینند.
آیا رشته آی تی به صورت کارشناسی ناپیوسته در دانشگاه شریف ارائه میشود؟
خیر، دانشگاه شریف در کل دو مقطع کارشناسی و کارشناسی ارشد آی تی را ارائه میدهد و هیچ مقطع ناپیوستهای برای این رشته در شریف موجود نیست.
آیا میتوان بدون کنکور آی تی شریف پذیرفته شد؟
خیر، تنها راه قبولی در رشته آی تی شریف کنکور سراسری رشته ریاضی فیزیک که هر ساله تحت نظر سازمان سنجش برگزار میشود، است.