Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите студентке с нахождением сложности алгоритмов!

5.7K
10 ноября 2003 года
Lenochka
1 / / 10.11.2003
Помогите пожалуйста, очень надо!
Даны 3 алгоритма, самы алгоритмы объяснять не буду, не в них суть. Надо найти сложность каждого алгоритма. (я так предпологаю, что сложностькаждого будет n!) Нужно красивое объяснение нахождения этой сложности.
Алгоритмы:

1. Генерирование всех последовательностейв антилексикографичеком порядке.
Данные: n
Результат: Пеоследовательность перестановок множества {1,…,n} в антилексикографическом порядке.
(написано на VB)

Private Sub REVERSE(m As Integer)
Dim i, j, tmp As Integer
i = 1
j = m
While i < j
tmp = P(i)
P(i) = P(j)
P(j) = tmp
i = i + 1
j = j - 1
Wend
End Sub
----------------------------------------------------
Private Sub ANTYLEX(m As Integer)
Dim i, tmp, k As Integer
Dim A As String

If m = 1 Then
A = ""
For k = 1 To n
A = A + Str(P(k))
Next k
lstAntylex.AddItem A
Else
For i = 1 To m
ANTYLEX (m - 1)
If i < m Then
tmp = P(i)
P(i) = P(m)
P(m) = tmp
REVERSE (m - 1)
End If
Next i
End If
End Sub
----------------------------------------------------
Private Sub cmdBegin_Click() ' вводится число n заполняется массив начальными значениями,
lstAntylex.Clear ' последовательность будет выводится в ListBox - lstAntylex
n = txtN.Text
ReDim P(n)

For i = 1 To n
tmp = P(i)
P(i) = i
i = tmp
Next
ANTYLEX (n)
End Sub

2. Генерирование всех перестановок за минимальное число транспозиций.

Function B(m As Integer, j As Integer) As Integer
Dim tmp As Integer

If (m Mod 2 = 0) And (m > 2) Then
If j < m - 1 Then B = j Else B = m - 2
Else
B = m - 1
End If
End Function
------------------------------------------------------------
Private Sub PERM(m As Integer)
Dim tmp, k, i As Integer
Dim A As String

If m = 1 Then
A = ""
For k = 1 To n
A = A + Str(P(k))
Next k
lstAntylex.AddItem A
Else
For i = 1 To m
PERM (m - 1)
If i < m Then
tmp = P(B(m, i))
P(B(m, i)) = P(m)
P(m) = tmp
End If
Next i
End If
End Sub
------------------------------------------------------------
Private Sub cmdBegin_Click()
lstAntylex.Clear
n = txtN.Text
ReDim P(n)

For i = 1 To n
tmp = P(i)
P(i) = i
i = tmp
Next
PERM (n)
End Sub

3. Генерирование всех перестановок с минимальным числом транспозиций соседних элементов.

Private Sub cmdBegin_Click()
Dim i, k, tmp, j As Integer

lstAntylex.Clear
n = txtN.Text
ReDim P(n), C(n), PR(n)

For i = 1 To n
P(i) = i
C(i) = 1
PR(i) = True
Next i
C(n) = 0
A = ""
For j = 1 To n
A = A + Str(P(j))
Next j
lstAntylex.AddItem A
i = 1
While i < n
m = m + 1
i = 1
x = 0
While C(i) = n - i + 1
If PR(i) = True Then PR(i) = False Else PR(i) = True
C(i) = 1
If PR(i) Then x = x + 1
i = i + 1
Wend

If i < n Then
If PR(i) Then k = C(i) + x Else k = n - i + 1 - C(i) + x
tmp = P(k)
P(k) = P(k + 1)
P(k + 1) = tmp
A = ""
For j = 1 To n
A = A + Str(P(j))
Next j
lstAntylex.AddItem A
C(i) = C(i) + 1
End If
Wend
End Sub


СПАСИБО!
С Уважением MINX
MINX
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог