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

فكرة مشروع ضغط ملفات 20 جيجا الى 25 بايت مفتوحة المصدر نرجو الدخول والتعليق

بدأه eramax في 31 مايو 2008 · 15 رد · 3,215 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

بحمد الله اتمنى ان يفيدكم هذا الموضوع ويفيد العالم باجمعه ان شاء الله

فكرة المشروع مفتوحة المصدر وانت حر فى امتلاكها تطوريها تعديلها كتابة اسمك عليها اى شئ ولا تنسانى بدعائك

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

لعل بعضكم يوفق فيها ويكمل الى نجاحها

اولا ناخذ مثال على ملف به data شكلها عندما ننظر لها بال Binary هى

001000010110100001101101011001010100100

ولو قمت بترجمة هذا الملف من ال Binary الى String حتكون الناتج

Ahmed

او بمعنى افضل من ذلك سيكون Array of Char

'A' 'h' 'm' 'e' 'd'

لو قمنا بترجمة كل حرف الى ما يقابله فى ال ASCII سيكون الناتج هو

65 104 109 101 100

هنا انا لدى مجموعة من الارقام (Vector ) اذا استطعت ان اجد معادلة اذا عوضت فيها ب X ستعطينى 65

واذا عوضت فيها ب x+1 ستعطينى 104 واذا عوضت فيها ب x+2 ستعطينى 109

F(X)=65
F(X+1)=104
F(X+2)=109
F(X+3)=101
F(X+4)=100

ومن هنا فالمطلوب هو الاتى

ال F() و ال X ونهاية لقيم التعويض (كما فى مثالنا هى x+4)

طبعا الصعب فى الموضوع والمعوق لى فى الوقت الحالى نقطة ايجاد المعادلة التى تربط او تصف البيانات التى فى الملف

طبعا اتمنى ان تكون الفكرة وصلتلكم وهى اننى سوف ااخذ الملف واقوم بعمل Vector يحتوى على ال Ascii الخاصة بكل char فى هذا الملف واقوم بعد ذلك بحل هذه المعادلة بطريقة ما ؟؟؟؟!!!؟؟؟؟

ثم بعد ذلك يخرج لى ال F() وايضا ال X والنهاية التى انتهى عندها التعويض

طبعا موضوع ايجاد معادلة تصف هذه الداتا ليس امرا يسيرا خاصتا اذا ازداد عدد العناصر

طبعا كانت فكرتى مبنية اننى ااخذ من الملف واحد ميجا داتا واحملها على Memory Stream والعب معاهم حتى اجد المعادلة واجد X واجد النهاية التى بالبديهى المفروض هى X + عدد العناصر اللى لعبت معاها -1

وبعد كدا اروح احمل واحد ميجا تانى على ال memory stream اكتب على الاولى لاننى لن استخدمها مرة اخرى

وبعد ذلك اكرر العمليات على هذا المحمل مرة اخرى وهكذا

وفى النهاية سيصبح لدى ملف يتكون من

عدد من الصفوف يساوى حجم الملف / واحد ميجا (ده اذا كنت انا شغلى مبنى من الاول على واحد ميجا)

كل صف يتكون من

معادلة تصف مجموعة من العناصر عددهم هو 1024*1024 عنصر يعنى واحد ميجا بايت

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

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

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

طبعا سيكون بهذه الطريقة اذا ضغطت مثلا 20 جيجا فسيتكون 20*1024 سطر

لنفرض ان الحجم الذى سياخذه السطر هو 25 بايت (طبعا افتراض غير مبنى على اسلوب تجريبى)

فسيكون لدينا ملف حجمه هو 25*20*1024 بايت اى 512000 اى انها اقل من واحد ميجا (نص ميجا)

وهذا يعنى اذا جربت ضغطها مرة اخرى بسيكون الناتج هو 25 بايت

تصور تضغط 20 جيجا الى 25 بايت والله اكيدانا جننت فى عقلى

فكرة فك الضغط

وهى اننى ااخذ هذا الملف واقوم بتحميله طبعا سطر سطر على ال memory stream

ثم بعد ذلك ابدا بالتعويض وهذا امر سهل جدا ولكن صعوبته هو انه ربما تكون المعادلة كبيرة فتاخذ وقت ولكن لا شك فى سهولة الفكرة

ثم كلما عوضت ب X فى المعادلة التى حملتها معى على ال memory stream ابدا ارمى ناتج التعويض على الفايل

الذى جارى انشائه (الملف المفكوك )

وههكذا سطرا وراء سطرا حتى النهاية

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

طبعا منتظر تعليقاتكم على هذا المشروع الذى اخذت فى التفكير به كثيرا والمحاولات ولم انجح فى ان اصل الى طريقة

لحل مشكلة ايجاد المعادلة وقيم التعويض

لعدت اسباب اهممها هو ان هناك مشكلة كبيرة جدا وهى الوقت الذى سيتغرق لايجاد المعادلة بالاضافة الى CPU Time الذى سيكون فى حالتنا عالى جدا جدا

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

واود ان انبه ان فكرة هذه المشروع فى نظرى انها فكرة رائعة جدا ربما هى مطبقة وربما لم تخترع من قبل

ولكن انا لم اقصد الا ان اساعد نفسى واساعدكم فى حلها

لم اقصد ان ابنى مشروعا لكى اكتب عليه اسمى ولكن اردت المشروع لذاته ان يكون موجودا

ادعوكم الى ان تتعاونوا على دعم ومساعدة البرامج المفتوحة المصدر والمشاركة فيها

اجعل اخى كل برامجك مفتوح المصدر ربما لن تنعم ماديا ولكن مؤكد سنتعم فكريا واخلاقيا

لانك تخدم الكمبيوتر وليس تشتغل به للكسب

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

ولابد لمن سيعلق ان يقراء الموضوع كاملا

بعض اللينكات التى يمكن ان تفيد القارئ

/index.php?showtopic=162113

/index.php?showtopic=92229

شكرا لكم

السلام عليكم ورحمة الله وبركاته

احمد عصام

تم تعديل هذه المشاركة بواسطة eramax في 31 مايو 2008 في 18:29

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#2

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

دور فى موضوع ال Perfect Hashing Function وشوف النتيجة

-------

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

#3

موضوع ال Perfect Hashing Function هو اتجاه غير الذى اقصده بالمرة

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

اما موضوعى اتمنى كما كتبت فى الموضوع قراءت الموضوع باكمله

شكرا وامتنى ان ندخل فى الحوار اكثر من ذلك لماذا هذا يستحيل انا ليس خبيرا فى الارياضيات ولكن مادامت هناك نظريات جعلت الانسان يستطيع ان يجد بها حلول لذلك النوع من المسائل فلا حرج ان يقوم بتطبيق تلك النظريات الكمبيوتر

المشكلة اذا كانت هى كيف نكتب برنامجها ربما صعب او معقدة ولكن اكيد يصلح كتابتها

شكرا على الدخول فى الحوار اخى ASDen

اضافة الى الرد هناك برنامج اسمه KGB هذا برنامج ضغط ممتاز جدا ياخذ وقت كبير جدا وCPU كبيرة جدا

ومع ذلك ضغطه لم يصل الى ما انوى ايه فى فكرتى وبالرغم من ذلك هو يستخدم من قبل البعض

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#4
اقتباس
دور فى موضوع ال Perfect Hashing Function وشوف النتيجة

اسأل Google عن ال Hashing فى ال File Structure و عن ال Hash tables ك Data Structures

و اقرا فى موضوع ال Collision

---

و مره أخرى ما تحاول عملة لا يخرج عن نطاق تكوين ال Perfect Hashing Function

#5

هل اعتبر من كلامك انه يوجد حل مؤكد بعكس ما قيل لى انه يستحيل ايجاد المعادلة

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

ملاحظة مهمة جدا ايجاد المعادلة مع ايجاد القيم التى سيعوض بها

اكرر ايضا رجا ء من يملك فكرة للحل ان يشاركنا بها

شكرا اخى ASDen على اضافتك لبداية الطريق

شكرا للجميع

احمد عصام

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#6
اقتباس
هل اعتبر من كلامك انه يوجد حل مؤكد بعكس ما قيل لى انه يستحيل ايجاد المعادلة

لالا العكس تماما...

المعادلة غير ممكنة الحل بأسلوب مجزى (لة عائد) ... أو بمعنى اخر الموارد المستنذفة فى حلها أهم منها

ولذلك في العلوم التى ذكرت كانوا يبحثون فى الحلول الجزئية

مجرد عملية تقليل لل Collision لا أكثر

أما ال Perfect Hashing Function ... فحلم

#7

موضوع يستحق الدراسة

-------------------------------------------------------------------------------------------------------------------------

|||||||||||||||| الحلم شيء مش مستحيل وبميت دليل بنكملة مشوار طويل وعلشان جميل قادرة القلوب تتحملة ||||||||||||||||

___________________________________________________________________________

#8

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

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

أرجوا أن يكون رأيى وصل

#9
اقتباس
لو بحثت ووجدت قيمة X فلابد وأن تخرج لك عدد احتمالات بعدد حروف ASCII لايمكن أن تختزلها أكثر من ذلك

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

ولكن كلامك اكيد صحيح ولكن مرة اخرى انا لا اعلم كيف سيبنى خوارزم ايجاد المعادلة لان ذلك سيكون داخل الخوارزم نفسه

هناك افكار لم اتطرق لها فى الشرح يمكن من خلالهم ان نحل مشكلة قيمة X

الاولى:

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

الثانية :

هى ان ابنى الخوارزم ان يختار او ان يجد قيمة ل X مناسبة له فى الحل وفى هذه الحالة كما تقول اخى سيكون عدد احتمالاته بعدد حروف ASCII

ولكن هذا سيسهل الخوارزم بمعنى ان الخوارزم سيلعب مع شكل المعادلة وايضا مع القيم التى سيعوض بها

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

الثالثة :

هى ان 1024*1024 قيمة التى سيعوض بها فى المعادلة لايجاد البايتات الحقيقية للملف

هى ان اجعلها Array List بمعنى انها لن تكن متسلسلة

مشكلة هذا الحل هى ان array list ساحتاج لمكان كبير لها مما سيجعل الملف الناتج المضغوط حجمه كبير وبذلك فقد قدرة البرنامج الكبيرة على الضغط وضياع ال cpu time فى سبيل السهولة

مميزات ذلك الحل انه هو الحل الجائز بسهولة تامه والذى من خلاله استطيع ان اكمل فى المشروع بسهولة

وهو فى نظرى اسهلهم وليس افضلهم ولكنه اقلهم فى CPU time

شكرا اخى TYEF على مشاركتك ونتمنى المزيد من الحوار

اتمنى ان يخرج مشروع عربى ينادى كل العالم بنجاحه لا اتكلم عن هذا المشروع ولكن اتكلم عن اتحادنا لاخراج مشروع ناجح

شكرا للجميع

احمد عصام

تم تعديل هذه المشاركة بواسطة eramax في 31 مايو 2008 في 21:37

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#10

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

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

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

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

#11

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

#12
اقتباس
إذا أردت ضغط 25 رقم على سبيل المثال فستحتاج إلى تكوين معادلة من الدرجة 24 بها 25 مجهول

انا لا اعرف لماذا ستكون المعادلة من الدرجة 24

وبالنسبة للطريقة اخى التى كلمتنى عليها فاننى لم استطع ان افكر حتى كيف اكتب خوارزم لها

اقتباس
الطريقة هي :

1- احسب عدد العناصر

2- اكتب معادلة من الدرجة ن-1 حيث ن هي عدد العناصر والمعاملات مجهولة

3- قم بالتعويض عن المجهول في المعادلة - س على سبيل المثال - بأعداد متتالية من 1 إلى ن وضع في الطرف الآخر من المعادلة قيم العناصر بالترتيب

4- سيتكون عندك ن من المعادلات في ن من المجاهيل - المعاملات - قم بحل هذه المعادلات للحصول على المعاملات

5- انتهى الحل

وحتى لو تم ذلك فستكن على عدد قليل جدا من القيم لن يتعدى عشرة قيم

لا اظن ان الطريقة يمكن لها ان تستمر على نطاق كبير من الاعداد

وصراحتا لم افهم ماذا افعل فانت تعطينى عناوين فقط للطريقة وليس طرق حلها

اتمنى اخى ان تساعدنا بخبرتك

شكرا للجميع

احمد عصام

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#13

وانا ااسف لاننى ربما وقعت فى اخطاء مفاهيم رياضية وذلك لعدم تعمقى فى دراسة الرياضايت

انا اضع هذه الفكرة لكم وانتم تسخدموها اذا كانت تصلح او ممكنه

واذا لم تكن فلن تضر

شكرا لمشاركتكم وعفوا على اخطائى

احمد عصام

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#14

لا داعي أخي للإعتذار من حقك أن تفكر وأنا فقط أحاول أن أوصل لك ما عندي

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

نفترض الأرقام 7 - 8 - 12 - 19

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

mimetex.cgi?ax%5E3+bx%5E2+cx+d

سنقوم بالتعويض عن x بالأعداد 1 - 2 - 3 - 4 ونضع في الطرف الآخر من المعادلة قيم العناصر فنحصل على المعادلات الأربع التالية

mimetex.cgi?a+b+c+d=7%5C%5C8a+4b+2c+d=8%

والآن لدينا 4 معادلات في أربع مجاهيل كل ما علينا هو حل هذه المعادلات لإيجاد قيم a - b - c - d فتكون هذه هي المعادلة ويمكن تعميم هذه الطريقة على أي عدد من العناصر

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

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

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

#15

بارك الله فيك اخى باسم ولكن من الواضح انه ستكون هناك مشكلة كبيرة جدا الا وهى

اذا كنت عشان اضغط 25 قيمة اجلس احاول اخراج معادلة من الدرجة 24 فممكن من ذلك يكون الحجم الذى سيخزن عليه المعادلة اكبر من الحجم الملف نفسه المراد ضغطه

طبعا ليس اكيد هذا ولكن جائز بنسبة كبيرة جدا

ولكن اذا كانت كذلك طريقة حل المعادلات فليس لها فائدة فى المشروع

كنت اظن ان التعامل مع معادلة سيكن افضل ولكن لم اظن ان حجم المعادلة سيتضخم بهذا الاسلوب

انا لا اعلم هل هناك حلول ممكن من خلالها ان تصبح المعادلة بسيطه ليس اخراجها من البداية بسيطة ولكن بعد حل المعادلات هل يمكن تبسيط المعادلة

طبعا كل هذا ياخذ وقت اضافى ولكن المسالة موضوع مناقشة فكرة

لك جزيل الشكر اخى باسم وبارك الله فيك على الايضاح

شكرا للجميع

احمد عصام

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#16

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

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

newslatterlogo.jpg

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…