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

كل التبديلات من 1 الى N

مغلق
بدأه al-rassam في 13 أكتوبر 2006 · 9 رد · 1,466 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اقوم بعمل خوارزم لتنفيذ التالي:

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

فيأخذ الارقام من 1 الى n

هنا 1 , 2 , 3 ,4

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

وفي حالة n=4 فان الاحتمالات تكون 24 احتمالات

n rows and (n-1)! columns 

1234   1243   1324   1342   1423   1432
2134   2143   2314   2341   2413   2413
3124   3142   3214   3241   3412   3421
4123   4132   4213   4231   4312   4321

اتمنى اكون وضحت والموضوع بالنسبالي صعب لكن بالنسبالكم سهل ان شاء الله

#2

الخوارزميه هذه جزء من الخوارزميه التى اعمل عليها

/index.php?showtopic=109279

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

Moore’s Law

– “Number of transistors in chips doubles every 18 
months”.
–  Every 10 years, processors are 100 times more 
powerful.

Gilder’s Law

– “Bandwidth grows at least three times faster than 
computer power”.
– Assuming bandwidth doubles every 12 months; 
every 10 years, it is 1000 times better.
#3

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

وعلى العموم ساتابع موضوعك وافكر في طريقه

#4

!n هو عدد التبديلات بصفة عامة

اما بالنسبة للكود فهو صعب شويه

#5
اقتباس
!n هو عدد التبديلات بصفة عامة

اما بالنسبة للكود فهو صعب شويه

معروف ان !n هو عدد التبديلا

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

ممكن لو حاولنا نستخدم عملية استدعاء ذاتي لداله تقوم بتبديل العناصر

بس المشكله مش عارف احلها

ياريت لو تعرفوا الخوارزميه او اي محاوله منكم ممكن نتوصل لشيء

#6

هل شاهدت الموضوع

/index.php?showtopic=109279

اخبرتك ان انشاء التبديلات جزء من عمليه ايجاد المحدد

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

و سوف اوضح الطريقه التى استخدمها :

يتم اختيار عدد n عنصر بحيث كلما اخترت احد العناصر لا اختاره ثانيه

يعنى

1- نبدأ بأحد العناصر و ليكن 0 ومن ثم نضعه فى قائمه الحظر

2- نختار عنصر اخر و نتأكد انه ليس فى قائمه الحظر

3- نضيف العنصر الذى اخترناه اخيرا الى قائمه الحظر

4- نختار عنصر اخر و نتأكد انه ليس فى قائمه الحظر

....

تكرر اختيار العناصر حتى نختارها كلها اى n مره

و نعيد اللعبه منذ البدايه ولكن نبدأبعنصر اخر غير الذى بدأنا به المره السابقه

هذه احدى الطرق البسييييطه

و يوجد طرق اخرى تستخدم الTranspositions وغيرها

Moore’s Law

– “Number of transistors in chips doubles every 18 
months”.
–  Every 10 years, processors are 100 times more 
powerful.

Gilder’s Law

– “Bandwidth grows at least three times faster than 
computer power”.
– Assuming bandwidth doubles every 12 months; 
every 10 years, it is 1000 times better.
#7

شكرا Nuclear على التوضيح وانا حليت المشكله زي ماقلت

شكرا لك

#8

انظر الى هذا الحل

 program Perestanovki;
	  type Pere=array [byte] of byte;
	  var N,i,j:byte;
	  X:Pere;
	  Yes:boolean;
		procedure Swap(var a,b:byte);
	  var c:byte;
		begin c:=a;
			  a:=b;
			  b:=c
		   end;
	  procedure Next(var X:Pere;var Yes:boolean);
	var i:byte;

	  begin
	i:=N-1;
	while (i>0)and(X>X[i+1]) do dec(i);
	if i>0 then
	  begin
		j:=i+1;
		{поиск j}
		while (j<N)and(X[j+1]>X) do inc(j);
		Swap(X,X[j]);
		for j:=i+1 to (N+i) div 2 do
			   Swap(X[j],X[N-j+i+1]);
		Yes:=true
	  end
	else Yes:=false
	  end;
	begin
	  write('N=');readln(N);
	  for i:=1 to N do X:=i;
	  repeat
	for i:=1 to N do write(X);writeln;
	Next(X,Yes)
	  until not Yes
	end.

وهذا حل اخر باستخدام المعاودة

program PerestanovkiRecursion;
	  type Pere=array [byte] of byte;
	  var N,i,j:byte;
		  X:Pere;
		procedure Swap(var a,b:byte);
		  var c:byte;
		begin c:=a;a:=b;b:=c end;

  {*****************************}
	  procedure Generate(k:byte);
		var i,j:byte;
	   	  begin
		if k=N then
		  begin for i:=1 to N do write(X);writeln end
		else
		  for j:=k+1 to N do
		begin
		  Swap(X[k+1],X[j]);
		  Generate(k+1);
		  Swap(X[k+1],X[j])
		end
	  end;
   {*****************************}
	begin
	  write('N=');readln(N);
	  for i:=1 to N do X:=i;
	  Generate(0)
	end.

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#9

romanof

شكرا رومانوف على الطريقتين

#10

الاخ al-rassam أولا لست متمكن من الرياضيات او الخوارزميات.

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

هل هي 24 أحتمال؟ أذا كان الجواب نعم فلماذا؟ أو ما هي المعادلة؟ لأنني أرى أن الأحتمالات أكبر من 24

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

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

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