Permutasi merupakan banyaknya cara memilih k unsur dari suatu himpunan yang memiliki n unsur dengan memperhatikan urutan.
Suatu subhimpunan yang terbentuk baik secara kombinasi maupun permutasi dapat berupa subhimpunan yang berurutan mulai dari subhimpunan dengan nilai terkecil hingga terbesar, penggolongan Lexicographic, ({123},{132}..{321}) ataupun sebaliknya dan dapat pula tidak teratur.
Sebuah algoritma dapat dibentuk untuk menggenerate permutasi dan kombinasi dari himpunan {1,2,3,..,n} yang didasarkan pada sebuah prosedur untuk membangun subhimpunan dari permutasi dan kombinasi selanjutnya, sehingga subhimpunan pertama tidak mendahului subhimpunan selanjutnya atau dapat dikatakan penggolongan berdasarkan Lexicographic
Berikut prog yang saya coba buat,akan tetapi permutasi ini hanya sampai nilai k sama dengan 8… dan mungkin saja bisa ditambah untuk nilai yang lebih besar
#include<stdio.h>
#include<conio.h>
main()
{
int pilih,s;
char karakter;
awal:
clrscr();
puts(” ******************************”);
puts(” * PROGRAM GENERATING *”);
puts(” * PERMUTATION *”);
puts(” * Gigih Supriyatno *”);
puts(” * NPM.0506100681 *”);
puts(” * tingkat II TP *”);
puts(” ******************************\n”);
puts(“<*>Dalam program ini anda akan menghitung dan membangkitkan PERMUTASI”);
puts(“<*>r(r=1,2,..,8)suku dari sebuah himpunan s={1,2,3,…,n}”);
puts(” “);
printf(“<*>Masukan Jumlah elemen himpunan S = “);
scanf(“%d”, &s);
printf(“\n<*>Masukan nilai dari r = “);
scanf(“%d”, &pilih);
switch (pilih)
{
case 1: puts(“\nHasil permutasinya adalah :”);
permutasi1n(s);
break;
case 2: puts(“\nHasil permutasinya adalah :”);
permutasi2n(s);
break;
case 3: puts(“\nHasil permutasinya adalah :”);
permutasi3n(s);
break;
case 4: puts(“\nHasil permutasinya adalah :”);
permutasi4n(s);
break;
case 5: puts(“\nHasil permutasinya adalah :”);
permutasi5n(s);
break;
case 6: puts(“\nHasil permutasinya adalah :”);
permutasi6n(s);
break;
case 7: puts(“\nHasil permutasinya adalah :”);
permutasi7n(s);
break;
case 8: puts(“\nHasil permutasinya adalah :”);
permutasi8n(s);
break;
default:
{printf(“–>Maaf permintaan anda tak dilayani “);
printf(“\n karena kelebihan nilai r dari yang sudah ditentukan”);
printf(“\n Anda ingin mengulang(y/t)?\n”);
karakter=getch();
if(karakter==’y’||karakter==’Y’)
goto awal;
else
puts(“\nTerima Kasih ^-^”);
}
}
printf(“\n Anda ingin mengulang(y/t)?\n”);
karakter=getch();
if(karakter==’y’||karakter==’Y’)
goto awal;
else
puts(“\nTerima Kasih ^-^”);
getch();
}
permutasi1n(int x)
{
int a=1;
while(a<=x)
{printf(“%d) {%d}\n”,a,a);
a++;}
printf(“Jadi jumlah permutasi 1 dari %d atau P(%d,1)= %d”,x,x,a-1);
}
permutasi2n(int x)
{
int a,b,jumlah=0;
for(a=1;a<=x;a++)
{
for(b=1;b<=x;b++)
{
if(a!=b)
{
printf(“%d) {%d, %d}\n”,jumlah+1,a,b);
jumlah++;
}
else
continue;
}
}
printf(“Jadi jumlah permutasi 2 dari %d atau P(%d,2)= %d”,x,x,jumlah);
}
permutasi3n(int x)
{
int a,b,c,jumlah=0;
for(a=1;a<=x;a++)
{
for(b=1;b<=x;b++)
{
for(c=1;c<=x;c++)
{
if((a!=b)&&(b!=c)&&(a!=c))
{
printf(“%d) {%d, %d, %d}\n”,jumlah+1,a,b,c);
jumlah++;
}
}
}
}
printf(“Jadi jumlah permutasi 3 dari %d atau P(%d,3)= %d”,x,x,jumlah);
}
permutasi4n(int x)
{
int a,b,c,d,jumlah=0;
for(a=1;a<=x;a++)
{
for(b=1;b<=x;b++)
{
for(c=1;c<=x;c++)
{
for(d=1;d<=x;d++)
{
if((a!=b)&&(a!=c)&&(a!=d)&&(b!=c)&&(b!=d)&&(c!=d))
{
printf(“%d) {%d, %d, %d, %d}\n”,jumlah+1,a,b,c,d);
jumlah++;
}
}
}
}
}
printf(“Jadi jumlah permutasi 4 dari %d atau P(%d,4)= %d”,x,x,jumlah);
}
permutasi5n(int x)
{
int a,b,c,d,e,jumlah=0;
for(a=1;a<=x;a++)
{
for(b=1;b<=x;b++)
{
for(c=1;c<=x;c++)
{
for(d=1;d<=x;d++)
{
for(e=1;e<=x;e++)
if((a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(b!=c)&&(b!=d)&&(b!=e)&&(c!=d)&&(c!=e)&&(d!=e))
{
printf(“%d) {%d, %d, %d, %d, %d}\n”,jumlah+1,a,b,c,d,e);
jumlah++;
}
}
}
}
}
printf(“Jadi jumlah permutasi 5 dari %d atau P(%d,5)= %d”,x,x,jumlah);
}
permutasi6n(int x)
{
int a,b,c,d,e,f,jumlah=0;
for(a=1;a<=x;a++)
{
for(b=1;b<=x;b++)
{
for(c=1;c<=x;c++)
{
for(d=1;d<=x;d++)
{
for(e=1;e<=x;e++)
{
for(f=1;f<=x;f++)
if((a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(a!=f)&&(b!=c)&&(b!=d)&&(b!=e)&&(b!=f)&&(c!=d)&&(c!=e)&&(c!=f)&&(d!=e)&&(d!=f)&&(e!=f))
{
printf(“%d) {%d, %d, %d, %d, %d, %d}\n”,jumlah+1,a,b,c,d,e,f);
jumlah++;
}
}
}
}
}
}
printf(“Jadi jumlah permutasi 6 dari %d atau P(%d,6)= %d”,x,x,jumlah);
}
permutasi7n(int x)
{
int a,b,c,d,e,f,g,jumlah=0;
for(a=1;a<=x;a++)
{
for(b=1;b<=x;b++)
{
for(c=1;c<=x;c++)
{
for(d=1;d<=x;d++)
{
for(e=1;e<=x;e++)
{
for(f=1;f<=x;f++)
{
for(g=1;g<=x;g++)
if((a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(a!=f)&&(a!=g)&&(b!=c)&&(b!=d)&&(b!=e)&&(b!=f)&&(b!=g)&&(c!=d)&&(c!=e)&&(c!=f)&&(c!=g)&&(d!=e)&&(d!=f)&&(d!=g)&&(e!=f)&&(e!=g)&&(f!=g))
{
printf(“%d) {%d, %d, %d, %d, %d, %d, %d}\n”,jumlah+1,a,b,c,d,e,f,g);
jumlah++;
}
}
}
}
}
}
}
printf(“Jadi jumlah permutasi 7 dari %d atau P(%d,7)= %d”,x,x,jumlah);
}
permutasi8n(int x)
{
int a,b,c,d,e,f,g,h,jumlah=0;
for(a=1;a<=x;a++)
{
for(b=1;b<=x;b++)
{
for(c=1;c<=x;c++)
{
for(d=1;d<=x;d++)
{
for(e=1;e<=x;e++)
{
for(f=1;f<=x;f++)
{
for(g=1;g<=x;g++)
{
for(h=1;h<=x;h++)
{
if((a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(a!=f)&&(a!=g)&&(a!=h)&&(b!=c)&&(b!=d)&&(b!=e)&&(b!=f)&&(b!=g)&&(b!=h)&&(c!=d)&&(c!=e)&&(c!=f)&&(c!=g)&&(c!=h)&&(d!=e)&&(d!=f)&&(d!=g)&&(d!=h)&&(e!=f)&&(e!=g)&&(e!=h)&&(f!=g)&&(f!=h)&&(g!=h))
{
printf(“%d) {%d, %d, %d, %d, %d, %d, %d, %d}\n”,jumlah+1,a,b,c,d,e,f,g,h);
jumlah++;
}
}
}
}
}
}
}
}
}
printf(“Jadi jumlah permutasi 8 dari %d atau P(%d,8)= %d”,x,x,jumlah);
}
wooww… very comprehensive. sering2 deh bikin tulisan kek gini. pasti banyak manfaatnya buat orang lain