You are on page 1of 14

‫‪Type your text‬‬

‫الخوارزميات‬

‫ُتعرف «الخوارزميات‪ »Algorithms-‬بأنها مجموعة من الخطوات المحددة والمتسلسلة‬


‫التي تنفذ من أجل حل مشكلة ما أو من أجل تنفيذ مهمة محددة‪.‬‬
‫في عصرنا الحالي يكاد ال يخلو أي علم من تطبيق مفاهيم الخوارزميات بأشكالها‬
‫المختلفة ويشاع استخدام الخوارزميات في مجال علوم الحاسوب ولكن الخوارزميات‬
‫ليست بمفهوم حديث النشأة بل ظهر مفهومها بشكل أو بآخر في الحضارات القديمة‬
‫وسميت بهذا االسم نسبة إلى العالم محمد بن موسى الخوارزمي الذي أوجد هذا المصطلح‬
‫في القرن التاسع الميالدي‪.‬‬

‫محمد بن موسى الخوارزمي‬

‫ابي عبد هللا محمد بن موسى الخوارزمي عالم عربي مسلم من أهل خوارزم (حاليا في‬
‫أوزبكستان) ويكنى باسم الخوارزمي‪.‬‬
‫قيل أنه ولد حوالي ‪187‬م‪ ،‬وقيل أنه توفي بعد ‪232‬هـ أي بعد ‪841‬م وقيل توفي سنة‬
‫‪232‬هـ‪.‬‬
‫يعتبر من أوائل علماء الرياضيات المسلمين حيث ساهمت أعماله بدور كبير في تقدم‬
‫الرياضيات في عصره‪.‬‬
‫حسب بعض الروايات فقد أنتقلت عائلته من مدينة خوارزم (والتي تسمى ’’خيوا‘‘ في‬
‫العصر الحالي‪ ،‬في جمهورية أوزبكستان) إلى بغداد في العراق‪ ،‬والبعض ينسبه للعراق‬
‫فقط‪.‬‬
‫أنجز الخوارزمي معظم أبحاثه بين عامي ‪ 873‬و ‪ 833‬في دار الحكمة‪ ،‬التي أسسها‬
‫الخليفة المأمون‪ ،‬حيث أن المأمون عينه على رأس خزانة كتبه‪ ،‬وعهد إليه بجمع الكتب‬
‫اليونانية وترجمتها‪.‬‬
‫وقد استفاد الخوارزمي من الكتب التي كانت متوافرة في خزانة المأمون فدرس‬
‫الرياضيات‪ ،‬والجغرافية‪ ،‬والفلك‪ ،‬والتاريخ‪ ،‬إضافة إلى إحاطته بالمعارف اليونانية‬
‫والهندية‪.‬‬
‫نشر كل أعماله باللغة العربية‪ ،‬التي كانت لغة العلم في ذلك العصر‪ ،‬ويسميه الطبري في‬
‫تاريخه‪ :‬محمد بن موسى الخوارزمي القطربلّي‪ ،‬نسبة إلى قرية قُ ْطر ُبل ّ من ضواحي بغداد‪.‬‬
‫بدأ الخوارزمي كتابه (الجبر والمقابلة) بالبسملة‪.‬‬

‫وتشير الموسوعات العلمية ‪-‬كالموسوعة البريطانية (نسخة الطالب) وموسوعة‬


‫مايكروسوفت إنكارتا وموسوعة جامعة كولومبيا وغيرها على أنه عربي‪ ،‬في حين تشير‬
‫مراجع أخرى إلى كونه من أصول فارسية‪ ،‬وفي اإلصدار العام للموسوعة البريطانية تذكر‬
‫أنه "عالِم مسلم" من دون تحديد قوميته‪.‬‬

‫ُي َعد الخوارزمي من أكبر علماء العرب‪ ،‬ومن العلماء العالميين الذين كان لهم تأثير كبير‬
‫على العلوم الرياضية والفلكية‪ ،.‬وفي هذا الصدد يقول ألدو مييلي‪" :‬وإذا انتقلنا إلى‬
‫الرياضيات والفلك فسنلتقي‪ ،‬منذ البدء‪ ،‬بعلماء من الطراز األول‪ ،‬ومن أشهر هؤالء‬
‫العلماء أبو عبد هللا محمد بن موسى الخوارزمي"‪.‬‬

‫الخوارزمي مؤسس علم الجبر كعلم مستقل عن الحساب‪ ،‬وقد أخذه األوربيون عنه‪ ،‬وهو‬
‫أول من استعمل كلمة "الجبر" للعلم المعروف اآلن بهذا االسم‪ ،‬فلحد اآلن ما زال الجبر‬
‫يعرف باسمه العربي في جميع اللغات األوربية‪.‬‬
‫وترجع كل الكلمات التي تنتهي في اللغات األوربية بـ "‪ "algorism/algorithme‬إلى‬
‫اسم الخوارزمي‪ ،‬وهو أول من ألف في الجبر‪ ،‬كما يرجع إليه الفضل في تعريف الناس‬
‫باألرقام الهندية (وهي التي تعرف باألرقام العربية)‪.‬‬
‫ومن اإلسهامات الهامة للخوارزمي في الرياضيات اكتشافه بعض القواعد وتطويرها‪،‬‬
‫ومنها ‪ :‬قاعدة الخطأين‪ ،‬والطريقة الهندسية لحل المربعات المجهولة وهي التي تسمي‬
‫اليوم باسم المعادلة من الدرجة الثانية‪ ،‬كما نشر الخوارزمي أول الجداول العربية عن‬
‫المثلثات للجيوب والظالل‪ ،‬وقد ترجمت إلى الالتينية في القرن الثاني عشر‪.‬‬
‫إضافة إلى إسهاماته الكبرى في الحساب‪ ،‬أبدع الخوارزمي في علم الفلك وأتى ببحوث‬
‫جديدة في المثلثات‪ ،‬ووضع جداول فلكية (زيجا)‪.‬‬
‫وقد كان لهذا الزيج األثر الكبير على الجداول األخرى التي وضعها العرب فيما بعد‪ ،‬إذ‬
‫استعانوا به واعتمدوا عليه وأخذوا منه‪.‬‬
‫ابتكر الخوارزمي مفهوم الخوارزمية في الرياضيات و علم الحاسوب‪( ،‬مما أعطاه لقب‬
‫أبو علم الحاسوب) عند البعض‪ ،‬حتى أن كلمة خوارزمية في العديد من اللغات (و منها‬
‫‪ algorithm‬باالنجليزية) أشتقت من أسمه‪ ،‬باالضافة لذلك‪ ،‬قام الخوارزمي بأعمال‬
‫هامة في حقول الجبر و المثلثات والفلك و الجغرافية و رسم الخرائط‪ ،‬أدت أعماله‬
‫المنهجية و المنطقية في حل المعادالت من الدرجة الثانية إلى نشوء علم الجبر‪ ،‬حتى‬
‫أن العلم أخذ اسمه من كتابه حساب الجبر و المقابلة‪ ،‬الذي نشره عام ‪ ،838‬و انتقلت‬
‫هذه الكلمة إلى العديد من اللغات (‪ Algebra‬في اإلنكليزية)‪.‬‬

‫أعمال الخوارزمي الكبيرة في مجال الرياضيات كانت نتيجة البحاثه الخاصة‪ ،‬اال انه قد‬
‫أنجز الكثير في تجميع و تطوير المعلومات التي كانت موجودة مسبقا عند االغريق و‬
‫في الهند‪ ،‬فأعطاها طابعه الخاص من االلتزام بالمنطق‪.‬‬
‫بفضل الخوارزمي‪ ،‬يستخدم العالم األرقام العربية التي غيرت و بشكل جذري مفهومنا‬
‫عن األعداد‪ ،‬كما أنه قذ ادخل مفهوم العدد صفر‪.‬‬

‫كتاب الجبر كان أول كتبه عن الحل النظامي ’’للمعادلتان الخطية والتربيعية‘‘‪ ،‬كما هو‬
‫واضح فهو يعد ’’أبا الجبر‘‘‪ ،‬لقب يشاطره فيه ’’ديوفانتوس‘‘‪.‬‬
‫قدمت تراجم التينية لنظريته في علم الحساب‪ ،‬عن ’’األعداد الهندية‘‘‪’’ ،‬نظام األرقام‬
‫العشرية الوضعية‘‘ للغرب في القرن الثاني عشر‪ ،‬لم تصنع اسهاماته تأثيرا عظيما في‬
‫الرياضيات فحسب‪ ،‬بل وللغة كذلك‪.‬‬
‫كلمة األلجبرا هي محرفة من الجبر‪ ،‬احدى العمليتان المستخدمتان في حل ’المعادالت‬
‫الخطية‘‪ ،‬كما شرحها في كتابه‪ .‬الكلمتان ’اللجرزم‘ و’اللجرثم‘ تنسبان إلى كلمة‬
‫’الجورتمي‘‪ ،‬النطق الالتيني السمه‪ ،‬كما أن اسمه هو أصل الكلمة األسبانية ’هوارزمو‘‪،‬‬
‫والكلمة البرتغالية ’الوارزمو‘‪ ،‬واللتان تعنيان الرقم‪ ،‬وكتاب الزيج األول‪ ،‬الزيج الثاني‬
‫المعروف بالسند هند‪ ،‬كتاب الرخامة‪ ،‬كتاب العمل باإلسطرالب‪ ،‬كتاب الجبر والمقابلة‬
‫الذي ألَّفه لما يلزم الناس من الحاجة إليه في مواريثهم ووصاياهم‪ ،‬وفي مقاسمتهم‬
‫وأحكامهم وتجارتهم‪ ،‬وفي جميع ما يتعاملون به بينهم من مساحة األرضين وكري‬
‫األنهار والهندسة‪ ،‬وغير ذلك من وجوهه وفنونه‪ .‬ويعالج كتاب الجبر والمقابلة‬
‫المعامالت التي تجري بين الناس كالبيع والشراء‪ ،‬وصرافة الدراهم‪ ،‬والتأجير‪ ،‬كما يبحث‬
‫في أعمال مسح األرض فيعين وحدة القياس‪ ،‬ويقوم بأعمال تطبيقية تتناول مساحة بعض‬
‫السطوح‪ ،‬ومساحة الدائرة‪ ،‬ومساحة قطعة الدائرة‪ ،‬وقد عين لذلك قيمة النسبة التقريبية‬
‫ط فكانت ‪ 3 7/1‬أو ‪ ،22/1‬وتوصل أيضا إلى حساب بعض األجسام‪ ،‬كالهرم الثالثي‪،‬‬
‫والهرم الرباعي والمخروط كتاب "الجبر والمقابلة" وهو يعد األول من نوعه‪ ،‬وقد ألفه‬
‫بطلب من الخليفة المأمون‪.‬‬
‫وهذا الكتاب لم يؤد فقط إلى وضع لفظ الجبر وإعطائه مدلوله الحالي‪ ،‬بل إنه افتتح حقا‬
‫عصرا جديدا في الرياضيات‪.‬‬
‫وقد ترجم إلى الالتينية في القرن الثاني عشر‪ ،‬وكانت هذه الترجمة هي التي أدخلت هذا‬
‫العلم إلى الغرب‪ ،‬وظل هذا الكتاب قرونا عديدة مرجعا في أوروبا‪ ،‬وقد حققه األستاذان‬
‫ش َّر َفة ومحمد مرسي أحمد‪ ،‬ونشر أول مرة في القاهرة سنة ‪7131‬م‪ .‬ـ‬ ‫علي مصطفى ُم َ‬
‫"كتاب صورة األرض"‪ ،‬وهو مخطوط موجود في ستراسبورغ بفرنسا‪ ،‬وقد ترجم إلى‬
‫الالتينية‪ ،‬وتمت مقارنة المعلومات الموجودة فيه بمعلومات بطليموس‪ .‬ـ "كتاب العمل‬
‫باألسطرالب" و"كتاب عمل األسطرالب"‪ .‬وخالصة القول إن الخوارزمي يعد من أعظم‬
‫العلماء في عصره‪ ،‬وقد كان له أعظم الفضل في تعريف العرب واألوربيين‪ ،‬من بعدهم‪،‬‬
‫بنظام العدد الهندي‪.‬‬

‫فهو واضع علم الجبر وواضع كثير من البحوث في الحساب والفلك والجغرافيا‪ ،‬وقد‬
‫عبر ألدو مييلي عن عظمة الخوارزمي بقوله ‪ :‬وقد افتتح الخوارزمي افتتاحا باهرا‬
‫سلسلة من الرياضيين العظام‪ ،‬وقد ظلت كتبه تدرس في الجامعات األوربية حتى القرن‬
‫السادس عشر‪.‬‬
‫تعتبر انجازات الخوارزمي في الرياضيات عظيمة‪ ،‬و لعبت دورا كبيرا في تقدم‬
‫الرياضيات و العلوم التي تعتمد عليها‪.‬‬

‫الخوارزميات في علم الحاسوب‬

‫تعرف الخوارزميات في علم الحاسوب بأنها مجموعة من التعليمات البرمجية التي ينفذها‬
‫الحاسب االلي لتحقيق مهمة معينة‪ُ ،‬تنفذ هذه التعليمات على مجموعة من البيانات تعرف‬
‫باسم المدخالت ونتيجة لذلك نحصل على حل للمشكلة المحددة ويعبر عنه بالمخرجات‪.‬‬

‫تتباين الخوارزميات من حيث درجة الصعوبة وطريقة البحث عن الحل فقد تكون سهلة‬
‫كمثال معرفة ما إذا كان الرقم زوجيا أم فرديا أو قد تكون بالغة الصعوبة مثل خوارزمية‬
‫معرفة أقصر الطرق مسافة للوصول إلى مدينة معينة عبر المئات من الطرق المتاحة‪.‬‬

‫بداية تكتب الخوارزمية بصيغة الكود الزائف «ا‪ »pseudo code‬وهي طريقة منطقية‬
‫لكتابة األوامر ولكن ليست شفرة برمجية حقيقية فعلى سبيل المثال يمكن كتابة خوارزمية‬
‫تحديد ما إذا كان العدد زوجيا أم فرديا بصيغة كود زائف بالطريقة التالية‪:‬‬

‫قم بإدخال عدد معين ‪X‬‬


‫اقسم العدد المدخل على الرقم ‪2‬‬
‫إذا كان ناتج القسمة بدون باق فإن العدد ال ُمدخل زوجي‬
‫عدا ذلك فإن العدد المدخل فردي‬
‫هناك طرق أخرى للتعبير عن الخوارزمية أشهرها ما يعرف بمخططات التدفق « ‪flow‬‬
‫‪ »charts‬التي توضح تسلسل الخوارزمية من البداية حتى النهاية وهي عبارة عن تمثيل‬
‫مرئي لتسلسل الخطوات والقرارات الالزمة ألداء المهمة المحددة‪.‬‬
‫يمكن تمثيل الخوارزمية السابقة على شكل مخطط تدفق كالتالي‪:‬‬
‫نتيجة للتقدم المتسارع للعلم والتقنية في عصرنا وصعوبة المسائل التي تحتاج إلى حل‪،‬‬
‫يلجأ العلماء والباحثين إلى تصميم خوارزميات تمتاز بالكفاءة والسرعة‪.‬‬

‫فعلى سبيل المثال تنظيم ومراقبة السير في الطرق السريعة‪ ،‬وتحليل الجينيوم البشري‪ ،‬و‬
‫شبكات التواصل االجتماعي التي يتجاوز مستخدميها مئات المالئيين‪ ،‬تحتاج كل تلك‬
‫المواضيع إلى خوارزميات فائقة السرعة لمعالجتها وتحليلها إذ أن الحواسيب العادية حتى‬
‫وإن كانت قدرتها الحاسوبية فائقة فإنها ال تستطيع التعامل مع المسائل المعقدة بكفاءة‪.‬‬

‫لذا عند تصميم خوارزمية ما ينبغي التركيز على كفاءتها في التعامل مع المدخالت‬
‫الضخمة وسرعتها في الحصول على المخرجات المطلوبة‪.‬‬
‫أنواع الخوارزميات‬

‫نظرا لتنوع المجاالت العلمية ولخصوصية كل قسم فيها‪ ،‬فإن كل قسم على حدا لديه‬
‫مشاكله الخاصة وبالتالي يحتاج لخوارزميات معينة لحل تلك المشاكل‪.‬‬
‫بشكل عام هناك مجموعة من الخوارزميات ُتعتبر األساس وأما البقية فيتم اشتقاقهن‬
‫بشكل أو بآخر من تلك الخوارزميات األساسية وهي‪:‬‬

‫الخوارزميات العودية البسيطة «‪.»Simple Recursive‬‬


‫خوارزميات البرمجة الديناميكية «‪.»Dynamic Programming‬‬
‫الخوارزميات التراجعية «‪.»Backtracking‬‬
‫فرق تسد «‪.»Divide-and-conquer‬‬
‫خوارزميات ّ‬
‫خوارزميات الجشع «‪.»Greedy‬‬
‫خوارزمية هجوم القوة العمياء «‪.»Brute Force Attack‬‬
‫الخوارزمية العشوائية «‪.»Randomized algorithm‬‬
‫باإلضافة إلى ذلك‪ ،‬هناك العديد من الخوارزميات المتعلقة بالذكاء االصطناعي وعلم‬
‫التشفير وخوارزميات التحسين وخوارزميات تنقيب البيانات‪.‬‬

‫سبحان هللا وبحمده سبحان هللا العظيم‬


‫خرائط التدفق‬

‫ُتعرف خرائط التدفق «‪ »flowcharts‬بأنها مخططات توضح تسلسل الخوارزمية من‬


‫البداية حتى النهاية وهي عبارة عن تمثيل مرئي لتسلسل الخطوات والقرارات الالزمة‬
‫ألداء المهمة المحددة‪.‬‬

‫تجدر اإلشارة إلى أنه ال توجد معلومات واضحة حول مخترع فكرة خرائط التدفق ولكن‬
‫أول معيار موحد لخرائط التدفق قدّمها الزوجان “فرانك وليليان جيلبرت” في عام ‪7127‬‬
‫في عرض تقديمي ألعضاء الجمعية األمريكية للمهندسين الميكانيكيين بعنوان‪ ”:‬مخططات‬
‫العمليات‪ :‬الخطوات األولى في إيجاد أفضل طريقة للقيام بالعمل”‪.‬‬

‫بعد ذلك‪ ،‬في ثالثينيات القرن الماضي ‪ ،‬قام المهندس الصناعي “أالن إتش موجينسن”‬
‫بتدريب بعض المشاركين في مؤتمرات تبسيط العمل في نيويورك‪ ،‬بدأ المشاركون من هذا‬
‫المؤتمر مثل “أرت سبياتجر” و” ِبن جراهام” في استخدام خرائط التدفق في مجاالت‬
‫تخصصهم‪ ،‬مما ساعد في نشر استخدام مخطط التدفق‪.‬‬

‫كانت خرائط التدفق وسيلة شائعة لوصف خوارزميات الحاسوب وال تزال تستخدم لهذا‬
‫الغرض‪ ،‬يمكن اعتبار التقنيات الحديثة مثل مخططات لغة النمذجة الموحدة « ‪UML‬‬
‫‪ »activity diagrams‬على أنها امتداد لخرائط التدفق‪.‬‬

‫في سبعينيات القرن الماضي‪ ،‬انخفضت شعبية خرائط التدفق عندما أصبحت طرفيات‬
‫الحاسوب التفاعلية ولغات البرمجة من الجيل الثالث أدوات شائعة للتجارة‪ ،‬إذ يمكن‬
‫التعبير عن الخوارزميات بشكل أكثر إيجازا كرمز مصدر في مثل هذه اللغة‪ ،‬باإلضافة إلى‬
‫التعقيد الشديد الناتج عن استخدام خرائط التدفق لوصف الخوارزميات التي تحتوي على‬
‫أوامر التنقل والقفز‪.‬‬
‫تمثيل خرائط التدفق‬

‫رمز طرف المخطط‪ :‬و ُيمثل بإطار بيضاوي ‪.‬‬


‫اإلدخال أو اإلخراج‪ :‬و ُيمثل بشكل متوازي األضالع ويستخدم إلدخال البيانات أو لعرض‬
‫النتائج ‪.‬‬
‫العملية أو المعالجة‪ُ :‬تمثل بإطار مستطيل ويستخدم للعمليات الحسابية أو عمليات‬
‫المعالجة‪.‬‬
‫اتخاذ القرار‪ :‬و ُيمثل بشكل معين ويشير إلى وجود تفرع في العملية التخاذ قرار معين‪.‬‬
‫خطوط االتجاه‪ :‬تشير إلى اتجاه سير العملية‪.‬‬
‫توجد العديد من األنواع لخرائط التدفق المستخدمة في تمثيل الخوارزميات كخرائط التدفق‬
‫التتابعية البسيطة وهذا النوع يخلو من التكرارات والتفرعات بعكس خرائط التكرار البسيط‬
‫والمعقد وخرائط التفرع التي تتضمن اختيار القرارات وفيما يلي مثال توضحي بسيط‬
‫لخريطة تدفق تحوي كل من التكرار والتفرع في نفس الوقت‪.‬‬
‫هذا المخطط اسم خريطة التدفق لالستيقاظ من النوم كما هو موضح بالصورة التالية‬
‫ُيعرف التركيب اللغوي «‪ »syntax‬بأنه القواعد التي توضح كيفية استخدام لغة فكما‬
‫للغات البشرية قواعد نحوية خاصة بها‪ ،‬يوجد كذلك لغات قواعد خاصة بكتابة الجمل في‬
‫لغات البرمجة‪.‬‬
‫وإن أخطأت سهوا في كتابة جملة ما ستظهر لك رسالة «‪ »syntax error‬والتي تدل‬
‫على أن هنالك خطأ نحوي في الكود البرمجي فمثال في برنامج الماتالب يوجد األمر‬
‫الشهير «‪ »clc‬الذي يقوم بمسح نافذة األوامر‪.‬‬
‫في حالة كتابة «‪ »cls‬بدال عن «‪ »clc‬سيتظهر لك رسالة «‪.»syntax error‬‬
‫وأيضا في لغة البايثون «‪ُ ،»Python‬تكتب كلمة “‪ ”print‬دائما بأحرف صغيرة ثم‬
‫يتبعها وسيط – الشيء الذي تريد طباعته‪ ،-‬إذا لم تكتب (“‪print (“Hello World‬‬
‫تماما كما هو موضح هنا‪ ،‬فستتلقى خطأ في التركيب اللغوي للجملة‪.‬‬

‫تختلف الجمل تبعا للغات البرمجة وأيضا في لغة البرمجة نفسها هناك جمل بسيطة وجمل‬
‫معقدة وبشكل عام تحتوي الجملة الواحدة على واحد أو أكثر من العناصر التالية‪:‬‬

‫بيانات اإلدخال‪ – :‬على سبيل المثال‪ ،‬اسأل المستخدم سؤاال أو اجمع قيمة من جهاز‬
‫استشعار‪.‬‬
‫بيانات المعالجة‪ – :‬على سبيل المثال‪ ،‬أضف قيمتين معا أو اتخذ قرارا عندما تصل القيمة‬
‫إلى مبلغ معين‪.‬‬
‫بيانات اإلخراج‪ – :‬عرض بعض النتائج أو تشغيل صوت‪.‬‬
‫التعبيرات‪ :‬يتم استخدام التعبيرات داخل ال ُجمل عند التعامل مع القيم‪ .‬على سبيل المثال‪2 ،‬‬
‫‪ 2 +‬هو تعبير ُيرجع قيمة ‪ .4‬أما في برنامج حاسوبي‪ ،‬من الممكن أن يكون ذلك تعبيرا‬
‫لحساب عمرك‪.‬‬
‫تم بحمد هللا‬
‫بعض المصادر للمزيد‬
marefa.org
zenflowchart.com
Qaher Naji
kutub.info
‫لتواصل‬
: WebSite
centersoftwaresl.blogspot.com
: Email
souhail.developer@gmail.com

You might also like