النتائج 1 إلى 8 من 8

الموضوع: عن الخوارزم

  1. #1
    عضو فعال
    تاريخ التسجيل
    Feb 2004
    المشاركات
    1,091

    عن الخوارزم



    أريد شرحا مفصلا عن الخوارزم
    وشكرا





    __________________
    CSS - XHTML
    مدمن أنترنت غير متواجد حالياً


  2. #2
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2002
    المشاركات
    2,289
    المهمة9 غير متواجد حالياً

  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2001
    المشاركات
    823


    لا ادري كيف اشرح لك ماهو الخوارزم بالضبط
    هل تقصد الخوارزم الذي يوجد في كتب المرحلة الثانوية؟
    ام تقصد شيء آخر معين؟

    ولأن الكلمة فضفاضه وتحمل اكثر من معنى فإليك احدها

    تقريبا هو عبارة عن رسم لخطوات البرنامج والطريقة اللتي يتبعها

    في عمله

    وبالمثال يتضح المقال:
    افرض اننا نريد ان نحسب مساحة مستطيل مثلا
    فماذا سنحتاج لعمل ذلك

    اولا يتعين علينا ان يكون لدينا متغيرين
    الأول للطول والآخر للعرض

    ومن ثم نقوم بتعريف متغير ثالث لحساب مساحة المستطيل والتي هي عبارة عن الطول في العرض
    وطباعة هذا المتغير

    اتمنى ان اكون افدتك ولو بشيء بسيط

    واذا لم يكن هذا هو المقصود فلعلك توضح المطلوب للإخوة





    __________________
    يارب تهديني قبل لحظة الفوت ++ وتجزل ثوابي يا جزيل العطايا
    طريق التوبة II ذكرى II قلوب الأنقياء II صيد الفوائد IIمنابر الدعوة IIدعوة IIكلمات
    مهلا فقد يلد الأسى أفراحا ++ فالليل ينجب للحياة صباحا
    أبو الوليد غير متواجد حالياً

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2003
    المشاركات
    2,047


    you mean algorithm ?





    __________________
    -{Only God Can Judge Me}-
    القانون فوق الجميع و الجميع يموت بالجوع
    Dr-dre67 غير متواجد حالياً

  5. #5
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2002
    المشاركات
    2,289


    رد مقتبس من Dr-dre67
    you mean algorithm ?
    yes





    المهمة9 غير متواجد حالياً

  6. #6
    عضو فعال
    تاريخ التسجيل
    Feb 2004
    المشاركات
    1,091


    نعم الخوارزم الذي يجب أن يدرس قبل البدإ في أي لغة برمجة





    __________________
    CSS - XHTML
    مدمن أنترنت غير متواجد حالياً

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Aug 2004
    المشاركات
    107


    فى عام 1930عكف مجموعه من علماء الرياضيات لإيجاد خوارزميات, وبالخوارزميات يقصد سرد للخطوات العمليه فى حل مسئله معينه, هذه الخطوات هى مجموعه من النقاط تتسم بالبساطه والوضوح.

    دعونا نقوم بعمل خوارزميه لابسط مثال فى ترتيب الاعداد, نفترض ان لدينا قائمه تتكون من مجموعة اعداد مختلفه , اى لايوجد عدد مكرر بينها, هذه الاعداد تسمى معطياتا.

    لو سئلت اى إنسان كيف ترتب هذه الاعداد, لكان الجواب البديهي هو, اولاً إيجاد اصغر رقم, ثم وضعه فى بداية القائمه, وبعد ذالك العثور على العدد الذى يليه ومن ثم وضعه فى الخانه التاليه وهكذا إلى ان يتم ترتيب جميع الاعداد.

    فى عالم البرمجيات تكتب الخوارزميه على النحو التالى:

    1. اعثر على اصغر رقم فى المتبقى من القائمه
    2. قم بعمليه تبديل مكان للعدد الذى عثرت عليه و اول عدد فى القائمه المتبقيه
    3. عد إلى الخطوة الاولى وكرر الخوارزميه إلى ان تنتهى القائمه

    الخوارزميات لا تقتصر على البرمجميات فقط وإنما هى فى واقع الحياة العامه, فعلى سبيل المثال, طهى الطعام يتطلب معرفه الخوارزميه التى على اساسها تم الوصول إلى نتيجه معينه من المذاق والشكل لطبق معين. مكونات الطبق هى بمثابة المعطيات وطريقة تحضيرها هى الخوارزميه.

    ايجاد خوارزميه لمسئله معينه امر يسير للغايه, ولكن إيجاد خوارزميه فعاله وسريعه ليس من السهل فى كل الحالات.

    نفترض انك تريد السفر من القاهره إلى الرياض, يمكنك فعل ذالك باحدى هاتين الطريقتين:

    القاهره-دمشق-الخرطوم-القاهره-الرياض او القاهره-الرياض

    قطعاً الطريقه الاولى هى حل للمسئله, ولكن الطريقه الثانيه توفر الكثير من الوقت والمال, باطبع هذا مثال مبسط جداً ولكن الامر يختلف إذا كانت المعطيات اكثر, مثلاً لو افترضنا انك تريد زياره 10 عواصم عربيه وتريد ان تعثر على اقصر طريق, هنا تصبح المسئله اكثر تعقيداً, ولن تستطيع بمجرد النظر على الخارطه ان تحدد مسار رحلتك.

    فى الواقع مشكلة إيجاد اقصر طريق تسمى traveling salesperson problem وهى من المسائل المعقده, والتى تندرج تحت المسمى NP-complete Problems.

    عوده مره اخرى لمشكله ترتيب الاعداد, قد يظن البعض ان الطريقه السابقه لترتيب الاعداد هى الطريقه المثلى وربما الوحيده, ولكن الامر ليس كذالك فهناك العديد من الطرق ومازال البحث جارياً لإيجاد طرق افضل واسرع, ساسرد عليكم بعض اسماء لخوارزميات ترتيب الاعدد:

    1. Insertion sort
    2. Maxsort
    3. Bubble Sort
    4. Quicksort
    5. Heapsort
    6. Mergesort
    7. Shellsort
    8. Radix Sort
    كل طريقه من هذه الطرق لها مميزاتها ونواقصها, اختيار خوارزميه معينه يتوقف على نوعية المعطيات.

    إذاً ما هى القواعد التى تحكم كفائة خوارزميه معينه لاداء المهمه؟

    هناك خمس قواعد بموجبها نستطيع ان نختار الخوارزميه المناسبه لاداء العمل المطلوب وهى على النحو التالى:

    1. صحة النتيجه:

    لابد ان يكون النتاج هو الهدف الذى نصبو إليه, بمعنى انه لاتعتبر الخوارزميه صالحه لاداء العمل طالما النتيجه غير صحيحه. للتاكد من صحة الناتج لا يكفى ان نقارن بعض الامثله, فقد تكون النتيجه صحيحه لهذه الامثله ولكن عندما نضع معطيات اخرى تعطى نتيجه غير صحيحه.
    الطريقه المثلى للتاكد من صحة النتيجه هى إستخدام قواعد رياضيات للمعطيات والناتج, ومن ثم تطبيق هذه القواعد على الخوارزميه للتاكد من صحتها.

    2. كمية العمل المطلوب:

    كيف نقوم بقياس كميه العمل المطلوب لاداء الخوارزميه, إستخدام الساعه هى الطريقه التى يعمد إليها الكثيرون ولكنها طريقه خاطئه لانها تختلف بإختلاف نوع وسرعة الحاسوب, كذالك نوع المعطيات يواثر على الوقت المستغرق فى اداء العمل.
    لذالك لابد من ان نحلل الخوارزميه, والجزء الاهم فى هذه الحاله هو الجز الذى يتكرر بعدد المعطيات, امثال loop , for و while وغيرها من الحلقات وما تحتويه من اوامر هى التى تحدد كميه العمل نظراً لانها تتكرر عدد مرات اكثر كلما كبر حجم المعطيات.

    3. الذاكره المستخدمه:

    ايضاً فى هذه الحاله يشرع الكثير من المبرمجين فى تجربة الخوارزميه بمعطايات مختلفه, ولكن كما ذكرنا فى الحاله السابقه هذه الطريقه خاطئه لانها قد تنجح لبعض المعطيات ولكنها تفشل بمعطيات اخرى.
    هنا نقوم بتحليل loop وغيرها من الحلزونيات التى تتكرر, ونقارن المتغيرات وطريقه حفظها فى الذاكره, كما ان المعطيات تلعب دوراً كبيراً فلو فرضنا ان المعطيات هى مليون عدد, السؤال هو هل يمكن حفظ الاعداد فى الذاكره بطريقه افضل؟ هل يمكن ضغط المعطيات بحيث تاخذ حيز اقل؟

    4. السهوله:

    فى العاده سهوله الخوارزميه شئ مطلوب, ولكن فى بعض الاحيان قد تكون الخوارزميه السهله ليست هى الفعاله, لذالك عند إختيار خوارزميه معينه لابد ان نضع فى الاعتبار كثرة إستخدامها, فإذا كانت ستستخدم بطريقه مستمره قد يكون إختيار الخوارزميه الاكثر تعقيداً هو الاختيار الانسب.

    5. مثاليه:

    كل خوارزميه تتطلب عدد من الخطوات التى لا بد منها, على سبيل المثال لترتيب الاعدد لابد ان تمر على كل عدد على الاقل مره واحده, وكذالك لابد من تغير مكان الاعدد التى توجد فى غير موضعلها الاصلى.

    للوصول إلى المثاليه فى الخوارزميه, علينا ان نركز فى التقليل من الخطوات, مع الاخذ فى الاعتبار ان هناك خطوات لابد منها.

    تحويل الخوارزميه إلى برنامج:

    يتم تحويل الخوارزميه بطريقه من اثنين, إما ان تكون الخوارزميه سهلة التحويل بحيث لا يتطلب من المبرمج سوى كتابه الشفره المطلوبه, باى لغة كانت, او ان تكون الخوارزميه معقده وتتطلب من المبرمج إتخاذ قرارت معينه, مثلاً طريقه حفظ المعطيات, طريقه إختيار نوع المتغيرات, بحيث تتناسب معى اللغه التى يريد ان يستخدمها.

    من هذا نستخلص ان الخوارزميه لا علاقه لها بلغات البرمجه, وإنما تعتبر لغه برمجه معينه مجرد اداة لتطبيق الخوارزميه.

    كيف يتم الحساب:

    هناك طريقه يستخدمها علماء الرياضيات لحساب سرعة النمو, وبذالك نعصد سرعة نمو المعطيات والناتج اثناء عمل الحاسوب, هذه الطريقه تسمى (Asymptotic Groowth Rate), كل function له سرعة نمو مقارنة بالمعطيات الاوليه للمعادله, هذه السرعه يرمز لها ب Big O.

    هناك العدد من الرموز المستخدمه فى حساب سرعة النمو, ولكن نقتصر فى هذا الموضوع على دكر Big O, ماهى Big O؟ من الصعب ان تسبح خبير فى الخوارزميات دون التمكن من إستخدام هذا المصطلح.

    دعونا ناخذ بعض الامثله لان شرح هذا المصطلح صعب لكونه مصطلح نظرى.

    نفترض ان لديك برنامج معين يقوم بترتيب 10 ارقام فى 0.0034 ثانيه, ولكن إذا ادخلنا 100 رقم إستغرق الترتيب 3.4 ثانيه, قد يبدو الوقت المستغرق بسيط ولكن هل تعلم كم سيستغرق برنامجك فى ترتيب 100000 رقم, سيستغرق 108 سنوات, والان تستطيع المقارنه لنعرف كيف نستخدم Big O للوصول إلى هذه النتيجه.

    نلاحظ انه عندما زادت المعطيات بنسبه 10مرات زاد الوقت المستغرق بنسبه 1000 مره, إذاً نستخلص من هذا التحليل البسيط ان الوقت يزيد بنسبة x^3 (العدد مرفوع إلى اس 3), ويرمز لها بمصطلح Big O هكذا


    CODE

    O(x^3)




    قارن الان بين بعض سرعات النمو لتعرف الفرق:
    خوارزميه رقم 1:

    سرعة الاداء x, معطيات 10, الوقت 0.001 , معطيات 100, الوقت 0.01

    خوارزميه رقم 2:

    سرعة الاداء 2^x, معطيات 10, الوقت 0.001 , معطيات 100, الوقت 0.1

    خوارزميه رقم 3:

    سرعة الاداء 3^x, معطيات 10, الوقت 0.001 , معطيات 100, الوقت 1

    خوارزميه رقم 4:

    سرعة الاداء x^ـ2, معطيات 10, الوقت 0.001 , معطيات 100, الوقت 40000000000000000 عام

    لاحظ ان الاخيره هى خوارزيمه بسرعة نمو 2 مرفوعه لاس x وليس العكس.

    وهذا يبين لنا مدى اهميه إختيار الخوارزميه المناسبه لبرنامج معين.





    __________________
    Raheeb (AT) Gmail.com
    RHB غير متواجد حالياً

  8. #8
    عضو فعال
    تاريخ التسجيل
    Feb 2004
    المشاركات
    1,091


    بارك الله فيك أخي الحبيب





    __________________
    CSS - XHTML
    مدمن أنترنت غير متواجد حالياً





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض