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

كيف نتحايل على !1000 بالحاسوب والخوارزميات؟

بدأه عمر سعيد في 24 يناير 2010 · 12 رد · 2,300 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

انا اريد ان اسوي برنامج يرتب 1000 بعد ترتيب يجعلها تقلل الهدر بحيث طول العمود المقارن = 5.8 متر

مثال الابعاد التالية 120 - 180 - 160 - 140 - 200 - 150 سنيمتر

امثل ترتيب لتقليل الهدر هو 200 - 180 - 120 و 150 - 140 - 160

طبعا حسبتها بالتباديل او مضروب !6 ولكن المصيبة فين في حساب !1000 إذا أن اقصى مضروب حسبته حاسبة ميكروسوفت هو !533 تقريبا 4*10^1224

وحتى استطاعت او استطعت ايجاد !1000 فإن ذلك لن يفيد الا بشيء وحيد الاهو عدد الاحتمالات فكيف بايجاد كل هذه الاحتمالات وحسابها!

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

شاكر لكم حسن استماعكم وعفوا على الاطالة.

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هوالحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

من يفعل الخير لايعدم جوازيه --- لايذهب العرف بين الله والناس

#3

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

1. اذا كنت تريد جميع الحلول : استخدام البرمجة المتوازية Parallel Programming . مثلا عن طريق الthreads او message passing

2. اذا كنت تبحث عن حل مناسب وليس شرط افضل حل: توجد خوارزميات عديدة لهذا النوع مثل : الخوارزميات الجينيه، خوارزمية انمل وما شابه.

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

http://delphiforfun.org/programs/Library/big_integers.htm

http://delphiforfun.org/programs/big_factorials.htm

بالتوفيق.

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#4

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

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

شكرا على ردك اخي Speed_Of_Light

وشكرا على ردك اخي ابراهيم

ولكن خطرت ببالي عدت اسئلة وهي

هل توجد لغة برمجة خصصت للتعامل مع الاعداد الضخمة؟

وماهي لغة البرمجة التي صنعت من اجل الرياضيات والمسائل الحسابية وبشكل عام للتعامل مع الارقام فقط؟

وماهي البرمجة المتوازية وماهي Threads و Message Passing ؟

وهل يوجد شرح لخوارزمية النمل و tabu searsh ؟

ارجوا ان تكون المراجع باللغة العربية؟

وجزاكم الله خير......

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هوالحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

من يفعل الخير لايعدم جوازيه --- لايذهب العرف بين الله والناس

#5

مهلاً ! هكذا كم كبير من الأسئلة !!

معظم اللغات لها "طرق" للتعامل مع الأرقام الكبيرة "جداً"

قبل أن أجيبك، ما هي خلفيتك البرمجية ؟!

#6

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

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

اجل اخي Speed_Of_Light

خلفيتي البرمجية VB6 عزك الله وبدايات JAVA

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هوالحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

من يفعل الخير لايعدم جوازيه --- لايذهب العرف بين الله والناس

#7

إذا وكما قلت لك عليك استخدام فئة/صف الـ BigInteger في جافا

راجع هذا الموضوع كمثال على الحاجة إلى "أرقام كبيرة جداً" والحلول المقترحة:

/index.php?showtopic=209996&hl=%DA%CF%CF%20%DD%D1%CF%ED&st=0

وهذا كان حلي للمسألة:

oddfinder.java

#8

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

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

شكرا على ردك اخي Speed_Of_Light

يجري الان اعادة تحميل الجافا الى الذاكرة (طبعا سرعة الاسترجاع معلومة كل يوم بسب اشتغال المحل بفجوال بيسك 6 ومشاغل الحياة)

ولكن لم يرد احد على اسئلتي!!!

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هوالحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

من يفعل الخير لايعدم جوازيه --- لايذهب العرف بين الله والناس

#9

أخي لم أفهم من سؤالك سوى أنك تريد طريقة للتعامل مع الأرقام "الكبيرة جداً"

على كل حال هذا تطبيق بسيط لدالة العاملي ( ! ) للأرقام الضخمة في جافا:

public class bigFactorial {

    public bigFactorial() {
    }

    public BigInteger calcFactorial(int v) {
        BigInteger result = new BigInteger("1");
        for(int i=v;i>0;i--){
            result = result.multiply(new BigInteger(String.valueOf(i)));
        }
        return result;
    }

    public static void main(String[] args) {
        bigFactorial bi = new bigFactorial();
        System.out.println(bi.calcFactorial(1000).toString());
    }
}

تم تعديل هذه المشاركة بواسطة Speed_Of_Light في 30 يناير 2010 في 22:09

#10

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

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

صحيح ولكن

اقتباس

وحتى استطاعت او استطعت ايجاد !1000 فإن ذلك لن يفيد الا بشيء وحيد الاهو عدد الاحتمالات فكيف بايجاد كل هذه الاحتمالات وحسابها!

جملة الاسئلة تنص على

اقتباس

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

اجاب اخونا ابراهيم

اقتباس

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

1. اذا كنت تريد جميع الحلول : استخدام البرمجة المتوازية Parallel Programming . مثلا عن طريق الthreads او message passing

2. اذا كنت تبحث عن حل مناسب وليس شرط افضل حل: توجد خوارزميات عديدة لهذا النوع مثل : الخوارزميات الجينيه، خوارزمية انمل وما شابه.

على ضوء رده كتبت

اقتباس

هل توجد لغة برمجة خصصت للتعامل مع الاعداد الضخمة؟

وماهي لغة البرمجة التي صنعت من اجل الرياضيات والمسائل الحسابية وبشكل عام للتعامل مع الارقام فقط؟

وماهي البرمجة المتوازية وماهي Threads و Message Passing ؟

وهل يوجد شرح لخوارزمية النمل و tabu searsh ؟

ارجوا ان تكون المراجع باللغة العربية؟

وجزاكم الله خير......

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

اقتباس

وماهي البرمجة المتوازية وماهي Threads و Message Passing ؟

وهل يوجد شرح لخوارزمية النمل و tabu searsh ؟

ارجوا ان تكون المراجع باللغة العربية؟

وجزاكم الله خير......

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هوالحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

من يفعل الخير لايعدم جوازيه --- لايذهب العرف بين الله والناس

#11

هل بحثت في المنتدى ؟ :ph34r:

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#12

يا أخ عمر سعيد, الأخوة يطلبون المزيد من الشرح حول ما تريده. اشرح لنا المشكلة التي تواجهك أكثر, بصراحة أنا لم أفهم المطلوب من سؤالك :)

اقتباس
هل توجد لغة برمجة خصصت للتعامل مع الاعداد الضخمة؟

لا يوجد لغة واحدة, جميع لغات البرمجة يتوفر بها هذا الأمر. ماهي اللغة التي تعرفها؟

يمكنك استخدام Mathematica أو Matlab أو غيره من البرامج لحساب ما تريد. هناك Python أيضاً لديها مجموعة مكتبات برمجية من الطراز الرفيع لمثل هذه الأمور.

إذا كنت تعتقد أن هذا غير كافي, يمكنك استخدام GMPو لكنها ليست للمبتدئين على الإطلاق, و هي تستعمل من قبل العلماء في الغالب.

كبداية انظر للموضوع التالي إن كنت تستخدم ++C/C.

اقتباس
وماهي لغة البرمجة التي صنعت من اجل الرياضيات والمسائل الحسابية وبشكل عام للتعامل مع الارقام فقط؟

يختلف باختلاف الحاجة!

فمثلاً fortran و ++C/C يستخدمون للـ Number Crunching :)

Mathematica و Matlab و ... يستخدمون في وظائف أكثر تقدماً, و لكن كمية الحسابات تكون قليلة.

مكتبات Python تقع في الوسط, و توفر أداءً و ووظائف متقدمة.

اقتباس
وماهي البرمجة المتوازية وماهي Threads و Message Passing ؟

تحتاج إلى كتاب, و ليس إلى جواب :)

اقتباس
وهل يوجد شرح لخوارزمية النمل و tabu searsh ؟

الأخوة هنا أدرى بخوارزميات الذكاء الاصطناعي.

اقتباس
ارجوا ان تكون المراجع باللغة العربية؟

أنت تبحث عن المستحيل, إلا ماندر و وجدته في المنتدى؟

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 1 فبراير 2010 في 16:40

#13

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

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

اخي ابراهيم بحثت في المنتدى عن خوارزمية النمل و tabu search ولكن لم اجد لاشرح لها ولا خوارزمية وحتى في قوقل طبعا باللغة العربية فماهي نظرية النمل و tabu search ؟

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

اقتباس

نا اريد ان اسوي برنامج يرتب 1000 بعد ترتيب يجعلها تقلل الهدر بحيث طول العمود المقارن = 5.8 متر

مثال الابعاد التالية 120 - 180 - 160 - 140 - 200 - 150 سنيمتر

امثل ترتيب لتقليل الهدر هو 200 - 180 - 120 و 150 - 140 - 160

طبعا حسبتها بالتباديل او مضروب !6 ولكن المصيبة فين في حساب !1000 إذا أن اقصى مضروب حسبته حاسبة ميكروسوفت هو !533 تقريبا 4*10^1224

وحتى استطاعت او استطعت ايجاد !1000 فإن ذلك لن يفيد الا بشيء وحيد الاهو عدد الاحتمالات فكيف بايجاد كل هذه الاحتمالات وحسابها!

وان جهازي لديه معالج core 2 due وحسب 10 ابعاد في 13 دقيقة فاذا حسب 100 بعد حسب المتسلسلات الهندسية فالوقت المستغرق تقريبا 13* !100 / !10 =3*10^152 دقيقة =6.36*10^148 سنة اذا بدأنا بسنة كبيسة ستكون 6.34*10^148 :unsure:

واين اجد كتاب يشرح بشكل مبسط Threads و Message Passing ؟

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هوالحي القيوم وأتوب إليه

استغفرالله الذي لا إله إلا هو الحي القيوم وأتوب إليه

من يفعل الخير لايعدم جوازيه --- لايذهب العرف بين الله والناس

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

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

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

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

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