مقدمة في البرمجة الاحصائية

0

 مقدمة





لإحصاء

الإحصاء هو مجال دراسة يتعامل مع جمع البيانات وتحليلها وتفسيرها وعرضها.

 يستخدم المستطلعون الذين يأخذون عينات من آرائنا بشأن موضوعات تتراوح من الفن إلى علم الحيوان منهجية إحصائية.

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

لاستيعاب هذه المجموعة المتنوعة من المستخدمين ، يتم اختيار الأمثلة والمشكلات في هذا المخطط التفصيلي من عدة مصادر مختلفة.

الإحصاء الوصفي

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

مثال 1.1: تجميع متوسط ​​الضرب ، عدد مرات الضرب ، عدد الركلات المسجلة ، وعدد الضربات على أرضيه لكل لاعب ، بالإضافة إلى متوسط ​​الجري المكتسب ، نسبة الفوز / الخسارة ، عدد مرات الحفظ ، إلخ ،


مثال 1.2: يقدم المنشور المعنون "الجريمة في الولايات المتحدة" والذي نشره مكتب التحقيقات الفيدرالي معلومات موجزة عن الجرائم المختلفة في الولايات المتحدة.

 المقاييس الإحصائية الواردة في هذا المنشور هي أيضًا أمثلة للإحصاءات الوصفية وهي مفيدة للأفراد في تطبيق القانون.

الإحصاءات الاستنتاجية: السكان والعينة

السكان هي المجموعة الكاملة للأفراد أو العناصر أو البيانات قيد الدراسة في دراسة إحصائية.

 يسمى جزء السكان المختار للتحليل بالعينة." استنتاجي"

تتكون الإحصائيات من تقنيات للوصول إلى استنتاجات حول السكان بناءً على المعلومات الواردة في العينة.

مثال 1.3 يتم نشر نتائج استطلاعات الرأي على نطاق واسع في كل من وسائل الإعلام المكتوبة والإلكترونية.



يستخدم منظمو الاستطلاعات تقنيات الإحصاء الاستدلالي على نطاق واسع. يقدم الجدول 1.1 عدة أمثلة على السكان والعينات التي تمت مواجهتها في استطلاعات الرأي التي نشرتها وسائل الإعلام. تُستخدم طرق الإحصاء الاستدلالي لعمل استنتاجات حول السكان بناءً على النتائج الموجودة في العينات ولإعطاء مؤشر حول موثوقية هذه الاستنتاجات. لنفترض أن نتائج استطلاع لـ 600 ناخب مسجل تم الإبلاغ عنها على النحو التالي: 40 بالمائة من الناخبين يوافقون على سياسات الرئيس الاقتصادية. وبلغت نسبة الخطأ في الاستطلاع 4٪. يشير الاستطلاع إلى أن ما يقدر بنحو 40٪ من جميع الناخبين المسجلين يوافقون على السياسات الاقتصادية ، لكنها قد تصل إلى 36٪ أو تصل إلى 44٪.

مثال 1.4 يتم تطبيق تقنيات الإحصاء الاستدلالي في العديد من العمليات الصناعية للتحكم في جودة المنتجات المنتجة. في البيئات الصناعية ، قد تتكون قائمة السكان من الإنتاج اليومي لفرش الأسنان ورقائق الكمبيوتر والمسامير وما إلى ذلك. ستتألف العينة من اختيار عشوائي وتمثيلي للعناصر من عملية إنتاج فرش الأسنان ، ورقائق الكمبيوتر ، والمسامير ، إلخ. تُستخدم المعلومات الواردة في العينات اليومية لإنشاء مخططات التحكم. ثم يتم استخدام مخططات التحكم لمراقبة جودة المنتجات.

مثال 1.5 تستخدم الطرق الإحصائية للإحصاءات الاستنتاجية لتحليل البيانات التي تم جمعها في الدراسات البحثية. يعطي الجدول 1.2 العينات والسكان للعديد من هذه الدراسات. يتم استخدام المعلومات الواردة في العينات لعمل استنتاجات تتعلق بالسكان. إذا وجد أن 245 من 350 أو 70٪ من نزلاء السجون في دراسة عدالة جنائية تعرضوا لسوء المعاملة وهم أطفال ، فما هي الاستنتاجات التي يمكن استنتاجها فيما يتعلق بنسبة جميع نزلاء السجون الذين تعرضوا للإيذاء وهم أطفال؟


مجموعة متغيرة وملاحظة وبيانات
المتغير هو سمة من سمات الاهتمام فيما يتعلق بالعناصر الفردية لمجتمع أو عينة. غالبًا ما يتم تمثيل المتغير بحرف مثل x أو y أو z. تسمى قيمة المتغير لعنصر معين واحد من العينة أو المجتمع بالملاحظة. تتكون مجموعة البيانات من ملاحظات متغيرات  لعناصر العينة.
مثال 1.6 يتم استقصاء ستمائة ناخب مسجل وسؤال كل واحد عما إذا كانوا يوافقون أو لا يوافقون على السياسات الاقتصادية للرئيس. المتغير هو رأي الناخب المسجل في السياسات الاقتصادية للرئيس. تتكون مجموعة البيانات من 600 ملاحظة. ستكون كل ملاحظة استجابة "الموافقة" أو
الرد "لا توافق". إذا تم ترميز الاستجابة "الموافقة" على أنها الرقم 1 وتم ترميز الاستجابة "عدم الموافقة" بالرقم 0 ، فستتألف مجموعة البيانات من 600 ملاحظة ، كل واحدة منها إما 0 أو 1. إذا تم استخدام x لـ تمثل المتغير ، ثم يمكن أن تفترض x قيمتين ، 0 أو 1.

مثال 1.7 تم إجراء دراسة استقصائية على 2500 أسرة يرأسها أحد الوالدين وتتمثل إحدى سمات الاهتمام في الدخل السنوي للأسرة. تتكون مجموعة البيانات من دخل الأسرة السنوي البالغ 2500 فرد للأفراد في المسح. إذا تم استخدام y لتمثيل المتغير ، فستكون قيم y بين أصغر وأكبر دخل سنوي للأسرة لـ 2500 أسرة.

مثال 1.8: تم تسجيل عدد مخالفات السرعة الصادرة عن 75 من شرطة مرور ولاية نبراسكا لشهر يونيو. تتكون مجموعة البيانات من 75 ملاحظة

متغير كمي: متغير ومتغير مستمر
يتم تحديد المتغير الكمي عندما ينتج عن وصف الخاصية محل الاهتمام قيمة عددية. عندما يكون القياس مطلوبًا لوصف خاصية الاهتمام أو أنه من الضروري إجراء عد لوصف الخاصية ، يتم تحديد متغير كمي. المتغير المنفصل هو متغير كمي قيمه قابلة للعد. المتغيرات المنفصلة عادة
نتيجة العد. المتغير المستمر هو متغير كمي يمكن أن يفترض أي قيمة عددية على مدى فترة أو على فترات متعددة. عادة ما ينتج المتغير المستمر عن إجراء قياس من نوع ما.

مثال 1.9 يعطي الجدول 1.3 العديد من المتغيرات المنفصلة ومجموعة القيم الممكنة لكل منها. في كل حالة يتم تحديد قيمة المتغير عن طريق العد. بالنسبة لعلبة تحتوي على 100 حقنة لمرضى السكري ، يتم تحديد عدد الإبر المعيبة من خلال حساب عدد الإبر المعيبة من بين الـ 100 حقنة. يجب أن يساوي عدد العيوب التي تم العثور عليها إحدى القيم المدرجة البالغ عددها 101. عدد النتائج المحتملة محدود لكل من المتغيرات الأربعة الأولى ؛ أي أن عدد النتائج المحتملة هو 101 و 31 و 501 و 51 على التوالي. عدد النتائج المحتملة للمتغير الأخير لا نهائي. نظرًا لأن عدد النتائج المحتملة غير محدود ويمكن عده بالنسبة لهذا المتغير ، فإننا نقول إن عدد النتائج غير محدود إلى حد كبير.



في بعض الأحيان ليس من الواضح ما إذا كان المتغير منفصلاً أم مستمرًا. يتم التعبير عن درجات الاختبار كنسبة مئوية ، على سبيل المثال ، عادةً كأعداد صحيحة بين 0 و 100. من الممكن إعطاء درجة مثل 75.57565. ومع ذلك ، لا يقوم المعلمون بذلك في الممارسة العملية لأنهم غير قادرين على التقييم لهذه الدرجة من الدقة. يُنظر إلى هذا المتغير عادةً على أنه مستمر ، على الرغم من أنه منفصل لجميع الأغراض العملية. للتلخيص ، نظرًا لقيود القياس ، تفترض العديد من المتغيرات المستمرة في الواقع عددًا قابلاً للعد من القيم.
مثال 1.10 يعطي الجدول 1.4 العديد من المتغيرات المستمرة ومجموعة القيم الممكنة لكل منها. جميع المتغيرات الثلاثة المستمرة الواردة في الجدول 1.4 تتضمن القياس ، في حين أن المتغيرات في المثال 1.9 تتضمن جميعها العد.

متغير نوعي
يتم تحديد المتغير النوعي عندما ينتج عن وصف الخاصية محل الاهتمام قيمة غير رقمية. يمكن تصنيف المتغير النوعي إلى فئتين أو أكثر.
مثال 1.11 يقدم الجدول 1.5 العديد من الأمثلة على المتغيرات النوعية إلى جانب مجموعة من الفئات التي يمكن تصنيفها إليها.
غالبًا ما يتم ترميز الفئات المحتملة للمتغيرات النوعية لغرض إجراء تحليل إحصائي محوسب. يمكن ترميز الحالة الاجتماعية على أنها 1 أو 2 أو 3 أو 4 ، حيث يمثل 1 أعزب ، و 2 يمثل متزوجًا ، و 3 يمثل مطلقًا ، و 4 يمثل منفصلًا. الجنس المتغير يمكن ترميزه على أنه 0 للإناث و 1 للذكور. يمكن ترميز فئات أي متغير نوعي بطريقة مماثلة. على الرغم من أن القيم العددية مرتبطة بخاصية الاهتمام بعد تشفيرها ، فإن المتغير يعتبر متغيرًا نوعيًا.

المستويات الاسمية والعادية والمتداخلة والنسبية للقياس
يمكن تصنيف البيانات إلى أربعة مستويات للقياس أو جداول القياسات. ينطبق المقياس الاسمي على البيانات المستخدمة لتحديد الفئة. يتميز المستوى الاسمي للقياس ببيانات تتكون من أسماء أو تسميات أو فئات فقط. لا يمكن ترتيب بيانات المقياس الاسمي في مخطط ترتيب. لا يتم إجراء العمليات الحسابية للجمع والطرح والضرب والقسمة للبيانات الاسمية.
مثال 1.12 يعطي الجدول 1.6 العديد من المتغيرات النوعية ومجموعة من قيم بيانات المستوى الاسمي الممكنة. غالبًا ما يتم تشفير قيم البيانات للتسجيل في ملف بيانات الكمبيوتر. يمكن تسجيل فصيلة الدم على أنها 1 أو 2 أو 3 أو 4 ؛ يمكن تسجيل حالة الإقامة على أنها 1 ، 2 ،. . . ، أو 50 ؛ ونوع الجريمة يمكن تسجيلها على أنها 0 أو 1 ، أو 1 أو 2 ، إلخ. وبالمثل ، يمكن تسجيل لون علامة الطريق على أنه 1 أو 2 أو 3 أو 4 أو 5 ويمكن تسجيل الدين على أنه 1 أو 2 أو 3. لا يوجد ترتيب مرتبط بهذه البيانات ولا يتم تنفيذ العمليات الحسابية. على سبيل المثال ، إضافة "مسيحي ومسلم" (1 + 2) ولا يعطي الاديان الاخرى (3).

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


ينطبق مقياس الفاصل الزمني على البيانات التي يمكن ترتيبها بترتيب ما والتي تكون الاختلافات في قيم البيانات ذات مغزى لها. ينتج المستوى الفاصل للقياس عن العد أو القياس. يمكن ترتيب بيانات مقياس nterval في مخطط ترتيب ويمكن حساب الاختلافات وتفسيرها. يتم اختيار القيمة صفر بشكل تعسفي لبيانات الفاصل الزمني ولا تعني عدم وجود الخاصية التي يتم قياسها. النسب ليست ذات مغزى لبيانات الفاصل الزمني.

مثال 1.14 تمثل درجات Stanford-Binet IQ بيانات مستوى الفاصل الزمني. درجة ذكاء جو تساوي 100 ودرجة ذكاء جون تساوي 150. يمتلك جون معدل ذكاء أعلى من جو ؛ أي أنه يمكن ترتيب درجات معدل الذكاء بالترتيب. درجة ذكاء جون أعلى بمقدار 50 نقطة من درجة ذكاء جو ؛ أي أنه يمكن حساب الاختلافات وتفسيرها. ومع ذلك ، لا يمكننا أن نستنتج أن جون 1.5 مرة (150/100 = 1.5) أكثر ذكاءً من جو. درجة حاصل الذكاء صفر لا تشير إلى نقص كامل في الذكاء.
مثال 1.15 تمثل درجات الحرارة بيانات مستوى الفاصل الزمني. بلغت درجة الحرارة المرتفعة في 1 فبراير 25 درجة فهرنهايت وكانت درجة الحرارة المرتفعة في 1 مارس تعادل 50 درجة فهرنهايت. كان الجو أكثر دفئًا في 1 مارس مما كان عليه في الأول من فبراير. أي أنه يمكن ترتيب درجات الحرارة بالترتيب. كانت درجة الحرارة أعلى بمقدار 25 درجة مئوية في الأول من آذار (مارس) عنها في الأول من شباط (فبراير). أي يمكن حساب الاختلافات وتفسيرها. لا يمكننا أن نستنتج أنه كان أكثر دفئًا في الأول من آذار (مارس) مرتين مما كان عليه في الأول من شباط (فبراير). أي أن النسب غير قابلة للتفسير بسهولة. لا تشير درجة حرارة 0 درجة فهرنهايت إلى غياب الدفء.
مثال 1.16 تمثل درجات الاختبار بيانات مستوى الفاصل الزمني. سجلت لانا 80 في الاختبار وسجل كريستين 40 في الاختبار. سجلت لانا أعلى من كريستين في الاختبار ؛ أي أنه يمكن ترتيب درجات الاختبار بالترتيب. سجلت لانا 40 نقطة أعلى من كريستين في الاختبار ؛ أي أنه يمكن حساب الاختلافات وتفسيرها. لا يمكننا أن نستنتج أن لانا تعرف ضعف معرفة كريستين بالموضوع. لا تشير درجة الاختبار 0 إلى عدم وجود معرفة بشأن الموضوع. مقياس النسبة ينطبق على البيانات التي يمكن تصنيفها والتي يمكن إجراء جميع العمليات الحسابية بما في ذلك القسمة. القسمة على الصفر ، بالطبع ، مستبعدة. ينتج مستوى النسبة للقياس عن العد أو القياس. يمكن ترتيب بيانات مقياس النسبة في مخطط ترتيب ويمكن حساب الفروق والنسب وتفسيرها. تحتوي بيانات مستوى النسبة على صفر مطلق وتشير القيمة الصفرية إلى الغياب التام لخاصية الفائدة.
مثال 1.17 إن جرامات الدهون المستهلكة يوميًا للبالغين في الولايات المتحدة هي بيانات مقياس النسبة. يستهلك جو 50 جرامًا من الدهون يوميًا ، ويستهلك جون 25 جرامًا يوميًا. يستهلك جو ضعف كمية الدهون التي يستهلكها جون يوميًا ، نظرًا لأن 50/25 = 2. بالنسبة للفرد الذي يستهلك 0 جرامًا من الدهون في يوم معين ، هناك غياب تام للدهون المستهلكة في ذلك اليوم. لاحظ أن النسبة قابلة للتفسير وأن الصفر المطلق موجود.

ملاحظة التلخيص
تتضمن العديد من المقاييس الإحصائية قيم مختلفة. لنفترض أن عدد مكالمات الطوارئ 911 التي تم تلقيها في أربعة أيام كان 411 ، و 375 ، و 400 ، و 478. إذا سمحنا أن يمثل x عدد المكالمات المستلمة يوميًا ، فسيتم تمثيل قيم المتغير للأيام الأربعة على النحو التالي: x1 = 411 ، x2 = 375 ، x3 = 400 ، و x4 = 478. يتم تمثيل مجموع المكالمات للأيام الأربعة على النحو x1 + x2 + x3 + x4 ، وهو ما يساوي 411 + 375 + 400 + 478 أو 1664. الرمز Σx ، تُقرأ على أنها "مجموع x" ، تُستخدم لتمثيل x1 + x2 + x3 + x4. الحرف اليوناني الكبير Σ (يُنطق سيجما) يتوافق مع الحرف الإنجليزي S ويرمز إلى العبارة "مجموع." باستخدام تدوين الجمع ، سيتم كتابة العدد الإجمالي لـ 911 مكالمة للأيام الأربعة كـ Σx = 1664.
مثال 1.19 تم ملاحظة القيم الخمس التالية للمتغير 
x: x1 = 4، x2 = 5، x3 = 0، x4 = 6، x5 = 10. 
توضح الحسابات التالية استخدام تدوين الجمع.
Σx = x1 + x2 + x3 + x4 + x5 = 4 + 5 + 0 + 6 + 10 = 25
(Σx)2 = (x1 + x2 + x3 + x4 + x5 )2 = (25)2 = 625
Σx2 = x1
2
+ x2
2 + x3
2 + x4
2 + x5
2 = 42 + 52 + 02 + 62 + 102 = 177
Σ(x – 5) = (x1 – 5) + (x2 – 5) + (x3 – 5) + (x4 – 5) + (x5 – 5)
Σ(x – 5) = ( 4 – 5 ) + ( 5 – 5 ) + ( 0 – 5 ) + ( 6 – 5 ) + ( 10 – 5) = –1 + 0 – 5 + 1 + 5 = 0

مثال 1.20 استخدم ورقة عمل EXCEL لإجراء العمليات التالية على المتغيرات التالية.
Σx، Σx2، Σy، y2، Σyx.

في الشكل 1-1 ، تم إدخال قيم المتغير x في A2: A11 ، وتم إدخال قيم المتغير y في B2: B11 ، وتم إدخال التعبير = A2 ^ 2 في C2. قم بإجراء النقر والسحب من C2 إلى C11. يتم إدخال التعبير = B ^ 2 في D2 ويتم إجراء النقر والسحب من D2 إلى D11 ، ويتم إدخال التعبير = A2 * B2 في E2. قم بإجراء النقر والسحب من E2 إلى E11. (انظر الشكل 1-1.) الصيغة ، = SUM (A2: A11) في A12 تعطي Σx ، الصيغة ، = SUM (B2: B11) في B12 تعطي Σy ، الصيغة ، = SUM (C2: C11) في يعطي C12 Σx2 ، الصيغة ،
= SUM (D2: D11) في D12 تعطي Σy2 ، والصيغة = SUM (E2: E11) في E12 تعطي Σxy. كبديل لإدخال صيغ منفصلة في كل خلية ، يمكنك أيضًا تحديد الخلايا A12: E12 ثم النقر فوق الزر للحصول على جميع القيم دفعة واحدة.

شكل 1-1 EXCEL ورقة عمل توضح حسابات المجاميع ومجموع المربعات ومجموع النواتج المتقاطعة

برامج الكمبيوتر والإحصائيات
تتضمن تقنيات الإحصاء الوصفي والاستنتاجي حسابات متكررة مطولة بالإضافة إلى بناء تراكيب رسومية مختلفة. تم تبسيط هذه الحسابات والإنشاءات الرسومية من خلال تطوير برامج الكمبيوتر الإحصائية. يشار إلى برامج الكمبيوتر هذه باسم حزم البرامج الإحصائية ، أو مجرد حزم إحصائية. هذه الحزم الإحصائية عبارة عن برامج كمبيوتر كبيرة تؤدي العمليات الحسابية المختلفة والإنشاءات الرسومية التي تمت مناقشتها في هذا المخطط بالإضافة إلى العديد من البرامج الأخرى خارج نطاق المخطط التفصيلي. الحزم الإحصائية متاحة حاليًا للاستخدام على الحواسيب الكبيرة ، وأجهزة الكمبيوتر الصغيرة ، وأجهزة الكمبيوتر الصغيرة. يوجد حاليا العديد من الحزم الإحصائية المتاحة.  مثل: SAS و SPSS و MINITAB و EXCEL و STATISTIX. يحتاج طالب الإحصاء إلى أن يكون قادرًا على قراءة مخرجات الحزم المختلفة وكذلك استخدام الحزم. 


الرؤية بالحاسب : التعديلات على الصور

0

 تحسين الصورة

تحسين الصورة هو عملية تعديل صورة لتطبيق معين.

3.1 تحولات المستوى الرمادي الأساسي

معالجة النقاط:

إذا كان ناتج التحويل على بكسل يعتمد فقط على الإدخال المقابل له

بكسل ثم تسمى العملية معالجة النقطة.

نبدأ دراسة تقنيات تحسين الصورة من خلال مناقشة معالجة النقطة ذات المستوى الرمادي

وظائف التحويل.

الصورة السلبية:

 إنها عملية تحسين

 يأخذ نفي الصورة.

 هنا نحصل على المستوى الرمادي المقابل تمامًا.

يتم ذلك عن طريق إجراء التحول التالي

الإخراج (i، j) = (L-1) - الإدخال (i، j)

هنا L هو رقم المستوى الرمادي ، لصورة 8 بت هو 256.

مثال
صورة الإدخال

صورة سلبية
الإخراج (i، j) = (L-1) - الإدخال (i، j) هنا L = 256 نظرًا لأنها صورة 8 بت

3.2 الرسم البياني للصورة
 المدرج التكراري هو الرسم البياني على المستوى الرمادي للصورة.
 رسم بياني لصورة ذات مستوى رمادي في النطاق [0 ، L-1] مُعطى بواسطة
h(f(x, y))= n
 هنا n هو عدد وحدات البكسل في الصورة ذات القيمة الرمادية f.
إدخالات الرسم البياني للصورة المظلمة قريبة من الصفر.
في صورة Bright Image ، تكون إدخالات الرسم البياني قريبة من واحد (أبيض).
صورة الإدخال
3.4 تمديد التباين الخطي
 إنها عملية زيادة تباين الصورة.
 يزيد من نطاق المستويات الرمادية في الصورة.
 بسبب الصور منخفضة التباين
 إضاءة ضعيفة ،
 ضبط خاطئ لفتحة العدسة.
يتم تعريف التمدد المتباين من خلال:
الإخراج (i، j) = (المدخلات (i، j) -m1) * 255 / (m2-m1)
 هنا m1 هو الحد الأدنى لقيمة المستوى الرمادي في الصورة و m2 هو الحد الأقصى
قيمة المستوى الرمادي في الصورة.

صورة تباين منخفضة


صورة ممتدة على التباين
مثال : 
هنا m1 = 0 و m2 = 35
صورة الإدخال
صورة ممتدة على التباين
الإخراج (i، j) = (الإدخال (i، j) -m1) * 255 / (m2-m1)
For Pixel (0,0)
= (0-0)*255/(35-0)
= 0 * 255/35
= 0
For Pixel(0,1)
=(30-0)*255/(35-0)
= 30 * 255/35
= 218.57 = 219


3.5 معادلة الرسم البياني
 إنها تقنية تحسين التباين.
يتم تعريف معادلة الرسم البياني من خلال:
الإخراج (i، j) = cdf (المدخلات (i، j)) * 255
 هنا cdf هي دالة الكثافة التراكمية ويتم حسابها بواسطة
cdf (n) = cdf (n-1) + pdf (n)
 pdf هي دالة كثافة الاحتمال المحسوبة بواسطة
pdf (n) = الرسم البياني (n) / العدد الإجمالي للبكسل في الصورة

صورة الإدخال

صورة معادلة الهستوغرام


صورة الإخراج


مثال 

صورة الادخال 

صورة معادلة الهستوغرام

عملية حسابية :
 الرسم البياني هو عدد المستويات الرمادية للصورة
 الإخراج (i، j) = cdf (المدخلات (i، j)) * 255
 cdf (n) = cdf (n-1) + pdf (n)
 pdf (n) = الرسم البياني (n) / العدد الإجمالي للبكسل في الصورة
3.6 معالجة الصور الثنائية
 الصورة الثنائية هي صورة لها قيم 0 (أسود) و 1 (أبيض) فقط.
 الألوان الوحيدة في الصور الثنائية هي الأسود والأبيض.
العمليات الأساسية على الصور الثنائية هي عمليات منطقية مثل AND و NOT و OR و XOR.
 بالنسبة للمتغيرين الثنائيين A وB:
 ينتج a و b 1 فقط عندما يكون كل من a و b 1 ؛ وإلا فإن النتيجة هي 0.
 a OR b تساوي 0 عندما يكون كلا المتغيرين 0 ؛ وإلا فإن النتيجة هي 1.
 NOT (a) تساوي 0 ، إذا كانت a تساوي 1 ، والعكس صحيح.

لا يؤدي عامل التشغيل المنطقي نفس وظيفة التحويل السالب


تستخدم عمليات AND و OR لإخفاء ؛ أي لاختيار الصور الفرعية في الصورة.
 في أقنعة الصور AND و OR ، يمثل الضوء رقمًا ثنائيًا 1 ويمثل الظلام 0 ثنائيًا.
 يُشار إلى الإخفاء بمعالجة منطقة الاهتمام (ROI).
 فيما يتعلق بالتحسين ، يتم استخدام التقنيع لعزل منطقة للمعالجة


(أ) الصورة الأصلية. (ب) وقناع الصورة. (ج) نتيجة العملية AND على الصورتين (أ) و (ب).
(د) الصورة الأصلية. (هـ) أو قناع الصورة. (و) نتيجة العملية أو على الصور (د) و (هـ).


3.7 طرح الصورة
 هي عملية طرح صورة واحدة من الأخرى.
 يتم تعريف استقطاع الصورة بواسطة
الإخراج (i، j) = | input1 (i، j) - input2 (i، j) | ؛
تُستخدم فائدة هذه التقنية لتحسين الاختلافات في هذه الصورة كما هو الحال في التصوير الشعاعي بوضع القناع.
يوضح الشكل 3.29 (أ) صورة بالأشعة السينية لأعلى رأس المريض قبل حقن وسيط اليود في مجرى الدم.
يوضح الشكل 3.29 (ب) الفرق بين القناع (الشكل 3.29 أ) والصورة الملتقطة بعد مضي بعض الوقت بعد إدخال الوسيط في مجرى الدم.
تم تحسين المسارات الشريانية اللامعة التي تحمل الوسط بشكل لا لبس فيه


صورة الادخال 1 على اليسار صورة الادخال 2 على اليمين 

المخرجات
الإخراج (i، j) = | input1 (i، j) - input2 (i، j) | ؛
لـ Pixel (0،0)
= | (63-0) |
= 63
لـ Pixel (0،1)
= | (143-10) |
= 133


3.7 إضافة الصورة
 هي عملية إضافة صورة واحدة مع الأخرى.
يتم تعريف إضافة الصورة من خلال:
الإخراج (i، j) = input1 (i، j) + input2 (i، j) ؛

3.8 متوسط الصورة
 إنها عملية حساب متوسط صورتين.
يتم تحديد معدل الصورة من خلال:
الإخراج (i، j) = (input1 (i، j) + input2 (i، j)) / 2 ؛
يمكن تقليل تأثير الضوضاء الغوسية على الصور الرقمية المتسلسلة عن طريق حساب متوسط الصورة.





ترجمة فيصل عسيري لصالح مدونة فاب
المرجع :


Digital Image Processing 4th Edition
by Rafael Gonzalez (Author), Richard Woods (Author)

برنامج جافا لشرح استخدام التكرار لإيجاد حل لمشكلة رقم ما من تحركات الملكات في طاولة الشطرنج .java Program to demonstrate the use of recursion to find the solution for n queens problem .

0

 


import java.util.*;

public class Queens {

public static boolean isConsistent(int[] q, int n) {

for (int i = 0; i < n; i++) {

if (q[i] == q[n]) return false; // same column

if ((q[i] - q[n]) == (n - i)) return false; // same major diagonal

if ((q[n] - q[i]) == (n - i)) return false; // same minor diagonal

}

return true;

}

public static void printQueens(int[] q) {

int N = q.length;

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

if (q[i] == j) System.out.print("Q ");

else System.out.print("* ");

}

System.out.println();

}

System.out.println();

}

public static void enumerate(int N) {

int[] a = new int[N];

enumerate(a, 0);

}

public static void enumerate(int[] q, int n) {

int N = q.length;

if (n == N) printQueens(q);

else {

for (int i = 0; i < N; i++) {

q[n] = i;

if (isConsistent(q, n)) enumerate(q, n+1);

}

}

}

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int N;

System.out.print("Enter number of queens = ");

N = sc.nextInt();

enumerate(N);

}

}



Output

Enter number of queens = 4

* Q * *

* * * Q

Q * * *

* * Q *


* * Q *

Q * * *

* * * Q

* Q * *

برنامج جافا لتوضيح استخدام التكرار لعرض فيبوناتشي لرقم معين. recursion to display the Fibonacci sun of a given. number. java code

0




 import java.util.*;

class Fibona {

int num;

Scanner sc = new Scanner(System.in);

public void read() {

System.out.print("Enter a Number: ");

num = sc.nextInt();

}

public long fibonacci(int n) {

if(n<2) //basis part

return n;

return fibonacci(n-1) + fibonacci(n-2); //recursive part

}

public static void main(String args[]) {

Fibona f=new Fibona();

f.read();

long result=f.fibonacci(f.num);

System.out.println("The Fibonacci SUM is: "+result);

}

}



Output

Enter a Number: 7

The Fibonacci SUM is: 13

الخوارزميات وهياكل البيانات : الركيرشن (دالة التكرار)

0

الخوارزميات وهياكل البيانات
مقدمة في دوال التكرار


ما هي البيانات؟

أي معلومات مفيدة - يمكن تخزينها أو حفظها للرجوع إليها في المستقبل على سبيل المثال في المنظمة يمكن أن تكون اسم الموظف والعمر والقسم والعنوان وما إلى ذلك

هياكل البيانات

بنية البيانات هي طريقة لتنظيم كل عنصر في البيانات الذي لا يأخذ فقط في الاعتبار العنصر المخزن ولكن أيضًا علاقتها ببعضها البعض.

يمكن البحث في أي مؤسسة لمجموعة من السجلات أو معالجتها بأي ترتيب أو تعديلها.

يمكن أن يؤدي اختيار بنية البيانات والخوارزمية إلى إحداث فرق بين البرنامج الذي يتم تشغيله في بضع ثوانٍ أو عدة أيام.

الكفاءة: يُقال إن الحل يكون فعالًا إذا كان يحل المشكلة ضمن قيود موارده (المكان والزمان)

حدد هيكل البيانات كما يلي:

* تحليل المشكلة لتحديد قيود الموارد التي يجب أن يفي بها الحل.

* تحديد العمليات الأساسية التي يجب دعمها.

حدد قيود الموارد لكل عملية.

* حدد هيكل البيانات الذي يلبي هذه المتطلبات على أفضل وجه.

تعريف الريكيرشن.

تُعرف الدالة التي تستدعي نفسها بالريكيرشن.

  وهي طريقة لتعريف الدوال حيث يتم تطبيق الدالة التي يتم تعريفها ضمن تعريفها الخاص ، فهي تقنية خوارزمية حيث تقوم الدالة  من أجل إنجاز مهمة ، باستدعاء نفسها مع جزء من المهمة.

تعرض الدالة سلوكًا تكراريا و يمكن تعريفها بخاصيتين أو قاعدتين

1. حالة أساسية بسيطة (أو حالات) 

2. مجموعة من القواعد التي تقلل جميع الحالات الأخرى تجاه الحالة الأساسية و تسمى الحالة التكرارية.

تتكون الحالة التكرارية من ثلاثة مكونات:

(أ)تقسّم المشكلة إلى جزء واحد أو أكثر أبسط أو أصغر من المشاكل ،

(ب) استدعاء الدالة (بشكل متكرر) على كل جزء ، 

(ج) الجمع بين حلول والأجزاء في حل المشكلة.

مثال 1 : العامل " عملية رياضية لحساب عاملي عدد معين او كما تسمى بالانجليزية factorial

سنبدأ بمثال العامل ، والمشار إليه "!".

3! = 3* 2* 1

5! = 5* 4 *3 *2 *1

X! = X *(X − 1)* (X − 2)* (X − 3) *...* 3* 2* 1

0! = 1

فكيف نحسب ذلك !؟

هذه دالة تكرارية تقوم بذلك:

n!=n*(n − 1)! for n> 1, و n! = 1 for n ≤ 1. ie

• عامل (0) هو 1 [في الحالة الأساسية]

• عامل (1) هو 1 [في الحالة الأساسية]

نرمز بn لجميع الأعداد الصحيحة n> 1:  * عاملي العدد (n ‐ 1) [تعريف متكرر]

ويتم تحويله لبرنامج جافا كما يلي 

int factorial(int n)

{

if (n <= 1)

return 1;

else

return n * factorial(n‐1);

}

مثال 2: متتالية فيبوناتشي Fibonacci 

ليوناردو فيبوناتشي - عالم رياضيات

يمكن إنشاء تسلسل فيبوناتشي من خلال دالة تكرارية تشبه إلى حد بعيد وظيفة عامل التكرار.

الاختلاف الوحيد هو القاعدة التي تخص متوالية فيبوناتشي

is fib(n)= fib(n − 1) + fib(n − 2) for n> 1, and fib(n) = 1 for n > 1.

يظهر هذا النوع من التعريف التكراري "الركيرشن" بشكل متكرر في الرياضيات ، ويسمى أيضًا علاقة التكرار.

• فيبوناتشي (0) تساوي 0 [في الحالة الأساسية]

• فيبوناتشي (1) هي 1 [في الحالة الأساسية]

نرمز لجميع الأعداد الصحيحة n> 1

 n> 1: Fib (n) is (Fib (n ‐ 1) + Fib (n ‐ 2)) [متكررتعريف]

ويتم تمثيله بلغة الجافا كما يلي : 

int fib(int n)

{

if (n == 0)

return 0;

elseif (n == 1)

return 1;

else

return (fib(n‐1)+ fib(n‐2));

}

مثال 3: دالة القوى او الاسس

تعد دالة القوى أيضًا مثالًا على التكرار "recursion". قاعدة دالة القوة هي القوة (x, n) =

x * power(x , n‐1) for n> 0, and power(x , n ) = 1 for n = 0.

int power(double x, int n)

{

if (n == 0)

return 1;

else

return x * power(x,n‐1);

}

طرق الاستدعاء وتنفيذ التكرار "الركيرشن " 

سجل التنشيط

يتكون مكدس الاستدعاء "stack" من إطارات مكدسة (تسمى أيضًا سجلات التنشيط أو إطارات التنشيط).

هذه هياكل بيانات تعتمد على الآلة تحتوي على معلومات حالة الروتين الفرعي. 

يتوافق كل إطار مكدس مع استدعاء لإجراء فرعي لم ينته بعد ويقوم بالعودة.

 إطار المكدس الموجود أعلى المكدس مخصص للإجراء العمليات المنفذه حاليًا.

 يشتمل إطار المكدس عادةً على العناصر التالية على الأقل:

• رابط ديناميكي لسجل تنشيط المستدعيات

• عنوان المرسل إلى المستدعي الروتيني

• قيمة الإرجاع (إن وجدت)


مخطط الكتلة : 


تفصيل استدعاء التكرار

• ضع في اعتبارك مثال العامل المستخدم سابقًا

int factorial(int n) {

if(n == 0) { return 1; }

else { return n * factorial(n‐1); }

}

فكر الآن في الكود التالي لـ  دالة main ()


void main() {

int f = factorial(3);

System.out.print(f);

}


طريقة عمل استدعاء التكرار


تحليل التعقيد:

هو تحليل لحساب مقدار الوقت والمساحة التي ستستغرقها الخوارزمية / الدالة لإكمال العمليات من خلال حساب عدد العمليات الإجمالية.

  يُشار إليه عادةً بـ Θ 

دعنا نقول الدالة T (n) تشير إلى عدد العمليات الأولية التي يؤديها استدعاء الوظيفة Sum (n).

int Sum(n int) {

if n == 1 {

return 1

}

return n + Sum(n-1)

}

نحدد خاصيتين لـ T (n).

نظرًا لأن Sum (1) يتم حسابه باستخدام عدد ثابت من الدوال k1 ، T (1) = k1.

إذا كانت n> 1 ، فستؤدي الدالة عددًا ثابتًا من العمليات k2 ، وبالإضافة إلى ذلك ، ستقوم بإجراء استدعاء متكرر

لمجموع (n-1). سيؤدي هذا الاستدعاء المتكرر عمليات T (n-1).و في المجموع  نحصل على T (n) = k2 + T (n-1).

إذا كنا نبحث فقط عن تقدير مقارب لتعقيد الوقت ، فلا نحتاج إلى تحديد القيم الفعلية للثابتين k1 و k2. بدلاً من ذلك ، ندع k1 = k2 = 1 لإيجاد التعقيد الزمني لدالة الجمع Sum ، يمكن بعد ذلك تقليلها إلى حل علاقة التكرار

T(1) = 1

T(n) = 1 + T(n-1), حيث n > 1.

من خلال تطبيق هذه العلاقات بشكل متكرر ، يمكننا حساب T (n) لأي رقم موجب n.

T(n) = 1 + T(n-1)

= 1 + (1 + T(n-2))

= 2 + T(n-2)

=2 + (1 + T(n-3))

= 3 + T(n-3) = …

=k + T(n-k) = …

= n - 1 + T(1)

= n - 1 + 1= Θ(n)

   تكرار الذيل. او تيل ريكيرشن "TAIL RECURSION."

يتميز تكرار الذيل باستخدام استدعاء تكراري واحد فقط

في نهاية تنفيذ الدالة. الاستدعاء التكراري ليس فقط العبارة الأخيرة في الكود ، ولكن لا توجد فيه اسادعاءات تكراريه سابقة ، مباشرة أو غير مباشرة 

مثال : 

Example:

void tail (int i)

{

if (i>0)

{

System.ou t.p rintln(i);

tail(i‐1);

}

}

تكرار الذيل هو مجرد حلقة  او لوب "loop" ويمكن استبداله بسهولة بمثل هذا الكود.

void IterativeEquivalentofTail(int i)

{

for ( ; i>0; i‐‐)

System.ou t.p rint(i);

}

* يمكن للمترجمات الذكية "compilers"  اكتشاف تكرار الذيل وتحويله إلى تكراري لتحسين التعليمات البرمجية.

* يستخدم لتنفيذ الحلقات في اللغات التي لا تدعم هياكل الحلقة بشكل صريح. (مثل برولوج prolog).

* في اللغات المدعومة  بحلقة أو ما يعادلها ، مثل إذا تم دمج العبارة مع تعليمة goto ، فإن تكرار الذيل ليس ميزة موصى بها.


 عدم تكرار الذيل NON‐TAIL RECURSION.

تسمى الطرق التكرارية التي لا تكون متكررة الذيل  non-tail recursion






هنا يجب أن تقوم الدالة بإجراء طباعة واستدعاء آخر بعد الدالة التكرارية الأولى ، وبالتالي فهي مثال على عدم تكرار الذيل


الإدخال: "ABC" ، يصف التغييرات في المكدس او stack وقت التشغيل أثناء تنفيذ العكس ()

ملاحظة - من الكاتب - : يصعب احيانا ترجمة بعض عمليات الخورزميات للعربية لعدم وجود مصطلحات عربية معتمدة في مجال علوم الحاسب بشكل عام لذلك اقوم بعرضها باللغتين لتصل الفكرة 


تكمن مشكلة الخوارزمية غير الطرفية في أنها تستهلك الكثير من عمليات المكدس stack وليست فعالة 


تحويل عدم تكرار الذيل إلى تكرار الذيل 

يمكن تحويل طريقة التكرار غير الذيلية إلى طريقة تكرار الذيل عن طريق معلمة "مساعدة auxiliary" تُستخدم لتشكيل النتيجة.

يتم استخدام هذه التقنية عادةً مع دالة "مساعدة auxiliary".

وذلك  ببساطة للحفاظ على بناء الجملة البرمجية  بشكل نظيف وإخفاء حقيقة أن هناك حاجة إلى المعلمات المساعدة.

هل طريقةعامل العدد "factorial"  هي طريقة الذيل التكراري ؟

int fact(int x){

if (x==0)

return 1;

else

return x*fact(x‐1);

}

عند العودة من استدعاء متكرر ، لا يزال هناك عملية واحدة معلقة ، وهي الضرب.

لذلك ، العامل يعتبر  طريقة عدم تكرار الذيل "non‐tail recursive"

تحويل عدم تكرار الذيل إلى تكرار الذيل بالمثال البرمجي : 

int fact_aux(int n, int result) {

if (n == 1)

return result;

return fact_aux(n ‐ 1, n * result)

}

int fact(n) {

return fact_aux(n, 1);

}

التكرار المفرط "Excessive Recursion"

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

   وبذلك قد تكون هناك إمكانية لتكرار الحلول المحسوبة بالفعل.

على سبيل المثال: أرقام fibananci

باستخدام هذا المثال ، يمكننا بسهولة إظهار مدى عدم كفاءة الصيغة التكرارية، دعنا نحاول معرفة كيفية تقييم Fib (6).


هنا تم حساب fibananci للـ 4 مرتين ، 3 محسوبة 3 مرات ، 2 محسوبة 5 مرات ، 1 محسوبة 8 مرات و 0 محسوبة 5 مرات. هذا يعني أنه يتم حساب نفس الدالة مرات عديدة دون داع 


التراجع BACKTRACKING

يتيح لنا التراجع تجربة جميع السبل المتاحة بشكل منهجي من نقطة معينة الى نقطة اخرى

باستخدام التراجع ، يمكننا دائمًا العودة إلى الموقف الذي يوفر إمكانيات أخرى لحل المشكلة بنجاح

ولناخذ على سبيل المثال مشكلة تحركات حجر الملكة في لعبة الشطرنج على طاولة تتيح مساحة تحرك 4*4

حيث يمكن تحريك كل حجر في اي من المسارات المجاورة عمودية او افقية  شريطة الا يعترضها اي حجر اخر 





مشكلة تحركات حجر الملكة في لعبة الشطرنج على طاولة تتيح مساحة تحرك 8*8


التهيئة


الملكة الأولى

الملكة الثانية


الخ ...

مثال برمجي على خوارزمية التراجع 















ترجمة فيصل عسيري لصالح مدونة فاب
المرجع :
Adam Drozdek, Data Structures and Algorithms in Java, 4th edition, Cengage Learning Asia, 2013

برنامج جافا لحساب عاملي عدد معين باستخدام الركيرشن

0




java Program to demonstrate the use of recursion to find the factorial of a given number.


import java.util.Scanner;

class Factorial

{

public static void main(String args[])

{

int n, c, f = 1;

System.out.println("Enter number");

Scanner in = new Scanner(System.in);

n = in.nextInt();

if (n < 0)

System.out.println("Number should be non-negative.");

else

{

for (c = 1; c <= n; c++)

f = f*c;

System.out.println("Factorial of "+n+" is = "+f);

}

}



output:

Enter number

9

Factorial of 9 is = 362880

جميع الحقوق محفوظه © مدونة فـاب

تصميم الورشه