الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

موقع يضم العديد من الخوارزميات وهياكل البيانات

مغلقرائج
بدأه طارق إبراهيم في 23 مايو 2004 · 9 رد · 22,725 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الموقع على هذا الرابط http://www.nist.gov/dads/

وجدته بالمصادفه عندما كنت ابحث عن خوارزمية الضغط ببرنامج winrar

لدى سؤالين

الاول : هل الاكواد الخاصه بتلك الخوازميات قاصره فقط على ال c لان معظم ال implementation الخاصه بتلك الخوارزميات اراها مكتوبه بال c فقط دون غيرها من اللغات

الثانى : هل يجب دراسة الرياضيات قبل دراسة الخوارزميات .. ارى ان الكثير من الخوارزميات يعتمد على الرياضيات

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#2

1- الخوارزميات عادة تكتب لتكون قابلة للتطبيق على اي لغة ، ولكن يفضل الكثيرون تطبيقها (to implement it) بلغة C لأنها أسرع في التنفيذ وأكفأ وشفرتها المصدرية قابلة للحمل.

بالطبع إذا كنت تعرف C فيمكنك تحويل الكود لأ ي لغة أخرى.

2- الفهم الدقيق لبعض الخوارزميات يتطلب دراسة الرياضيات ، مثل خوارزميات التشفير والترميز والضغط.

من فروع الرياضيات التي ستحتاج لها نظرية الأعداد number theory والتحليل الحقيقي real analysis والتحليل العددي numerical analysis.

فكر بطريقة أخرى

#3
اقتباس
الفهم الدقيق لبعض الخوارزميات يتطلب دراسة الرياضيات ، مثل خوارزميات التشفير والترميز والضغط.

من فروع الرياضيات التي ستحتاج لها نظرية الأعداد number theory والتحليل الحقيقي real analysis والتحليل العددي numerical analysis.

يعنى لكى اصبح مبرمجاً حقيقياً لابد من دراسة الرياضيات

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#4

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

ابتكار خوارزميات جديدة في أحد المجالات التي ذكرتها آنفا يحتاج لفهم عميق في الرياضيات ، أما التطبيق المجرد لهذه الخوارزميات فلا يحتاج هذا القدر من التعمق.

فكر بطريقة أخرى

#5

هناك كتاب أسمه the Art Of Computer Programming و مؤلفه اسمه Knuth Arthur أعتقد إنه ممكن أن يفيدك

#6

مرفق صفحة المحتويات بالكتاب

Knuth_The_Art_of_Computer_Progr.rar

#7

walcom

انت ترفع من معنوياتى إذن فهناك امل للاحتراف ولكن كيف يمكننى دراسة الرياضيات التى تدرس بالجامعه

joe

اشكرك ولكن اعتقد انها محتويات الكتاب فقط

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#8

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

يمكنك الاطلاع على الكتاب من الرابط التالى:

http://en.wikipedia.org/wiki/The_Art_of_Computer_Programming

تم تعديل هذه المشاركة بواسطة joe911 في 24 مايو 2004 في 16:35

#9

و هذا رابط يحتوى على العديد من المقالات فى نفس الموضوع

http://www.geocities.com/SiliconValley/Gar...a_contents.html

#10

السلام عليكم ,,,

اقتباس
الفهم الدقيق لبعض الخوارزميات يتطلب دراسة الرياضيات ، مثل خوارزميات التشفير والترميز والضغط.

من فروع الرياضيات التي ستحتاج لها نظرية الأعداد number theory والتحليل الحقيقي real analysis والتحليل العددي numerical analysis.

كما ذكر walcom الفهم العميق ,, أو الدقيق ,,

بالنسبة لخوارزميات الضغط ,, كضغط الصور مثلا ,, توجد عدة طرق وعدة أنواع من الضغط ,, مثلا خوارزمية ال LZW خورزمية LSSZ وخوارزمية Huffman ,, وغيرها لكثير ,,

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

يعني بعد ضغط ملف ما بخوارزمية LZW ,, مرة كتبت برنامج يوجد عدد تكرارات حروف الآسكي في ملف قبل وبعد الضغط ,, فوجدت عدد التكرارات قبل الضغط مبعثر ,, بعد الضغط وجدت أن عدد التكرارات في كل لحروف متساوي تقريبا !! ولكل حروف لآسكي ,,

بعد للف والدوران استطعت أن أوجد طريقة لتطبيق خوارزمية قريبة من ال LZW ,, لكن حساباتها تأخذ وقتا أطول في الضغط ليس فك الضغط ,,

بالنسبة لضغط الصور ,, يمكن أن تستلقي على السرير وتفكر في خوارزمية ضغط جديدة للصور ,, مثلا أريد أن أضغط صورة bmp ,, صور ل bmp ,, تخزن بياناتها لكل بكسل سواء كان فيه لون أم لا ,, يعني مايحد حجم ال bmp هو أبعاد الصورة والعمق اللوني فقط وليست بيانات الصور ,, ألن تفكر وتقول ماهذا التبذير ؟ صورة 1024 * 768 ,, فاضية كلها ماعدا جزء مكتوب فيه اسم او رمز صغير في الطرف ,, وتجد حجم الصورة كبير يصل لأكثر من ميجابايت

خزن الصورة بطريقة أخرى ,, بحيث تكتب صيغة ملفات جديدة تقول ,,

اكتب فهرسا في ال header الخاص بالملف ,, لازاحات النقاط الحقيقية للصور ,, وخزن بيانات الصورة بنفس ترتيب الاحداثيات ,, ستجد أن حجم صورتنا الفاضية نقص 30 مرة أو أكثر تقريبا !!

فالفكرة هنا ليست اختراع العجلة من جديد لكن ليس كل علوم من سبقنا مفيد ,, ولايمكن لكتابة خوارزمية ضغط جديدة أن تنظر في كل خوارزميات الضغط المعروفة ,, وتضيع سنة من العمر في كلام فارغ ,,

كل خوارزميات الضغط حتى الآن التي نعرفها والتي لانعرفها ,, لم تنتج المنتج الكامل Perfect !! الذي يضغط أي ملف مهما كان وبكل تبديلات أنواع الملفات الممكنة ,,

لماذا ؟ لأن لكل خورزمية نقاط ضعف ونقاط قوة ,, فنجد مثلا أن خوارزمية ال rar تضغط في الغالب أفضل من ال zip ,, ولايمكن لملف zip أن يضغط زيادة بال zip ,, ولا ال rar أيضا هنا تستسلم خوارزميتان في الوصول للخوارزمية الكاملة ,,

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

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

الطريقة الثانية : أنه يمكن تنفيذها بطريقة رياضية لكن برياضيات غير ريضايتنا نحن اليوم ,, فهي لن تصلح لذلك !!

فكرت في أكثر من طريقة رياضية وكانت كلها مسدودة ,,

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

كل هذا الكلام مع أني خرجت عن الموضوع قليلا ,, فقط لأقنعك أن الرياضيات ليست علما بل هي طريقة تفكير فقط وتجارب من سبقنا من كثرة تفكيرهم !!

فقط ,, لذا كن واثقا أن الأساسات يمكن معرفتها بالقليل من الجهد ,,

اقتباس
أما التطبيق المجرد لهذه الخوارزميات فلا يحتاج هذا القدر من التعمق.

كلام سليم فمثلا برمجة الجرافيكس في ال Direct3D تحديدا أو حتى ال OpenGL ,, لكي نفهم مالذي يحدث وكيف تم تدوير كائن ثلاثي البعد وكيف تمت اضائته ,, وكل هذه الأمور نحتاج لفهم مقدم في التعامل مع المصفوفات الرياضية ودوران المحاور ,, وأن النقطة xyz عندما نضربها في المصفوفة W تتحول النقط xyz الى الموقع الفلاني الآخر وهكذا ,, يمكن تحريك كل النقاط بالضرب في نفس المصفوفة ,, لكن عندما نتعامل مع ال Direct3D فنحن لانعرف ماذا يحصل داخليا وكل نسخة من ال Direc3d تبعد المبرمج تدريجيا عما يدور داخلها من العمليات الرياضية ,,

بالمنسابة يمكن أن تنتج بنية تحتية كاملة للتعامل مع الأبعاد الثلاثة بدون استخدام المصفوفات ولاأي شيء من هذا القبيل :) فليس بالضرورة أن يحكمنا اسم الرياضيات المجرد ,, فالرياضيات كما قلت طريقة تفكير فقط ,,

بالتوفيق ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

هذا الموضوع مغلق.

مواضيع مشابهة