Buka menu utama

Perubahan

2.932 bita ditambahkan ,  12 tahun yang lalu
tidak ada ringkasan suntingan
# <math>d</math> adalah digit faktoradik ke-<math>i</math>, yaitu <math>a_i</math>
# Ulangi dari langkah kedua, dengan <math>m</math>(sisa bagi) menggantikan <math>n</math>, dan <math>i - 1</math> menggantikan <math>i</math>.
# Algoritma selesai jika <math>i</math> sudah mencapai 0.
 
Ketika berakhir, algoritma ini akan menghasilkan deretan faktoradik ''a''<sub>n</sub>...''a''<sub>4</sub>''a''<sub>3</sub>''a''<sub>2</sub>''a''<sub>1</sub>''a''<sub>0</sub>.
 
==Permutasi==
==Bilangan Inversi==
===Bilangan Inversi===
 
===Membentuk Permutasi dariberdasarkan Faktoradik===
Pertama-tama kita harus membuat kesepakatan mengenai indeks. Indeks untuk untai dimulai dengan indeks 0 dari kiri.
{| class="wikitable"
|-
| Untai
| a
| b
| c
| d
| e
| f
| g
|-
| Indeks
| 0
| 1
| 2
| 3
| 4
| 5
| 6
|}
Disediakan sebuah untai <math>s</math>, dan sebuah faktoradik <math>f</math>, maka algoritma untuk menghasilkan sebuah permutasi dari <math>s</math> adalah:
# Sediakan satu tempat, yaitu <math>s'</math> untuk menampung untai hasil permutasi
# Mulai dari digit <math>f</math> paling kiri (digit dengan indeks posisi paling besar):
#* Ambil huruf dari <math>s</math> di posisi <math>f_i</math>, pindahkan ke <math>s'</math>
# Ulangi hingga tidak ada lagi huruf pada untai <math>s</math>
Ketika algoritma ini selesai, <math>s'</math> akan merupakan permutasi dari <math>s</math> yang sesuai dengan <math>f</math>
 
Sebagai contoh, untuk menghasilkan permutasi dari '''abcdefg''', dengan indeks faktoradik 5341200 dengan algoritma tersebut, diberikan:
==Kode program untuk membangkitkan faktoradik==
===Pascal===
 
<math>s = \mathbf{abcdefg}</math>
FMax = CariFaktorialTerbesar(Bilangan);
dan
<math>f = (5, 3, 4, 1, 2, 0, 0)</math>
 
Disediakan <math>s' = \epsilon</math> (masih kosong).
 
{| class="wikitable"
|-
| Untai
| a
| b
| c
| d
| e
| f
| g
|-
| Indeks
| 0
| 1
| 2
| 3
| 4
| 5
| 6
|}
 
Pertama, mulai dari <math>f_6</math>, yaitu 5. Kemudian pindahkan huruf ke-5 (indeks 5) pada untai <math>s</math> ke untai <math>s'</math>, yaitu huruf '''f'''. Kondisi <math>s</math> dan <math>s'</math> sekarang menjadi <math>s = \mathbf{abcdeg}</math> dan <math>s' = \mathbf{f}</math>
 
Dengan <math>s</math> sekarang menjadi:
 
{| class="wikitable"
|-
| Untai
| a
| b
| c
| d
| e
| g
|-
| Indeks
| 0
| 1
| 2
| 3
| 4
| 5
|}
 
Bilangan kedua dari <math>f</math>, yaitu <math>f_5</math> adalah 3, maka pindahkan huruf ke-3 pada untai <math>s</math> ke untai <math>s'</math>. Maka kondisinya menjadi <math>s = \mathbf{abceg}</math> dan <math>s' = \mathbf{fd}</math>
 
{| class="wikitable"
|-
| Untai
| a
| b
| c
| e
| g
|-
| Indeks
| 0
| 1
| 2
| 4
| 6
|}
 
Dan seterusnya, yang jika dituliskan sekaligus adalah seperti ini:
{| class="wikitable"
! i
! <math>f_i</math>
! <math>s</math>
! <math>s'</math>
|-
| 6
| 5
| abcdeg
| f
|-
| 5
| 3
| abceg
| fd
|-
| 4
| 4
| abce
| fdg
|-
| 3
| 1
| ace
| fdgb
|-
| 2
| 2
| ac
| fdgbe
|-
| 1
| 0
| c
| fdgbea
|-
| 0
| 0
|
| fdgbeac
|}
 
==Kode-kode program==
===Kode program untuk membangkitkan faktoradik===
====Pascal====
 
FMax := CariFaktorialTerbesar(Bilangan);
Sisa := Bilangan;
'''for''' i := FMax '''downto''' 0 '''do'''
'''begin'''
f := Faktorial(i);
A[i] := Sisa '''div''' f;
Sisa := Sisa '''mod''' f;
'''end''';
===Kode untuk membangkitkan permutasi dari faktoradik===
====Pascal====
 
'''function''' Permutasi(Untai: STRING; Faktoradik: '''array of''' INTEGER): STRING;
'''var'''
Hasil: STRING;
i, Indeks: INTEGER;
'''begin'''
Hasil:='';
'''for''' i:=Low(Faktoradik) '''to''' High(Faktoradik) '''do'''
'''begin'''
Indeks:=Faktoradik[i] + 1; // ''Indeks ditambah 1 karena indeks array berawal dari 0''
Hasil:=Hasil + Untai[ Indeks ];
Delete(Untai, Indeks, 1);
'''end''';
Permutasi:=Hasil;
'''end''';
 
{{matematika-stub}}
82

suntingan