| |
|
|
| | может кто видел где алгоритм для разложения целого числа на слагаемые во всех вариантах
типа 5 =1+1+1+1+1, 1+1+1+1+2, 1+1+3, 1+4, 2+3.
шукаю его на просторах инета - как-то не получается сразу. | |
| |
| |
| |
|
|
| | А какое максимальное значение числа? | |
| |
| |
| |
|
|
| | в принципе для алгоритма это не должно иметь значения | |
| |
| |
| |
|
|
| | Конечно.
От этого будет зависеть время работы алгоритма и что-нибудь исчо . : )
+
В каком виде нужен "выхлоп"?
Для каких целей, если не секрет? | |
| |
| |
| |
|
|
| | круто....
это рекурсия - ты же с ней знаком(вроде бы)
гоняем до тех пор пока число не будет равно само себе(исходному)
=========================================================
эх када же я за ум возьмуся и выучу рекурсию - я ба тебе щас помог ба...... 
=====================================================================
а так ...
Сначала из 1 складываем
потом постепенно от 2-9 пробуем заменять количество единичек на эквивалент(2-9)
потом из 2 складываем
потом постепенно от 3-9 пробуем заменять количество единичек на эквивалент(3-9)
потом из 3 складываем
как дойдём до упора
пойдём в обратном направлении
чё та не соображу пока........ | |
| |
| |
| |
|
|
| | Ты забыл дописать 1+2+2
Кот, ты приобрел суперкомпьютер? На не очень больших числах обычный комп уйдет в аут. | |
| |
| |
| |
|
|
| | да, забыл
1+1+1+1+2 = 6
вообще-то
вообще этот алгоритм не очень понятен, должно быть как-то так ИМХО
1 1 1 1 1
1 1 1 2 0
1 1 3 0 0
1 4 0 0 0
2 1 1 1 0
2 2 1 0 0
2 3 0 0 0
3 1 1 0 0
3 2 0 0 0
4 1 0 0 0 | |
| |
| |
| |
|
|
| |
1 1 1 1 1
1 1 1 2 0
1 1 3 0 0
1 4 0 0 0
2 1 1 1 0
2 2 1 0 0
2 3 0 0 0
3 1 1 0 0
3 2 0 0 0
4 1 0 0 0
|
Это дублирование. И причем не единственное в данном алгоритме | |
| |
| |
| |
|
|
| | в каком смысле дублирование? дублирование ЧЕГО ИМЕННО? | |
| |
| |
| |
|
|
| |
в каком смысле дублирование? дублирование ЧЕГО ИМЕННО?
|
3+1+1 и 1+1+3 - это одно и тоже. Складываются одни и те же цифры. | |
| |
| |
| |
|
|
| | ничего страшного :)
во всяком случае это не дублирование, а то я уже испугался | |
| |
| |
| |
|
|
| | SELECT A.Enumerate, B.Enumerate, C.Enumerate, D.Enumerate, E.Enumerate, [A].[Enumerate]+[B].[Enumerate]+[C].[Enumerate]+[D].[Enumerate]+[E].[Enumerate] AS amt
FROM (SELECT 0 AS Enumerate FROM MSysObjects
UNION SELECT 1 FROM MSysObjects
UNION SELECT 2 FROM MSysObjects
UNION SELECT 3 FROM MSysObjects
UNION SELECT 4 FROM MSysObjects
UNION SELECT 5 FROM MSysObjects
UNION SELECT 6 FROM MSysObjects
UNION SELECT 7 FROM MSysObjects
UNION SELECT 8 FROM MSysObjects
UNION SELECT 9 FROM MSysObjects) AS A,
(SELECT 0 AS Enumerate FROM MSysObjects
UNION SELECT 1 FROM MSysObjects
UNION SELECT 2 FROM MSysObjects
UNION SELECT 3 FROM MSysObjects
UNION SELECT 4 FROM MSysObjects
UNION SELECT 5 FROM MSysObjects
UNION SELECT 6 FROM MSysObjects
UNION SELECT 7 FROM MSysObjects
UNION SELECT 8 FROM MSysObjects
UNION SELECT 9 FROM MSysObjects) AS B,
(SELECT 0 AS Enumerate FROM MSysObjects
UNION SELECT 1 FROM MSysObjects
UNION SELECT 2 FROM MSysObjects
UNION SELECT 3 FROM MSysObjects
UNION SELECT 4 FROM MSysObjects
UNION SELECT 5 FROM MSysObjects
UNION SELECT 6 FROM MSysObjects
UNION SELECT 7 FROM MSysObjects
UNION SELECT 8 FROM MSysObjects
UNION SELECT 9 FROM MSysObjects) AS C,
(SELECT 0 AS Enumerate FROM MSysObjects
UNION SELECT 1 FROM MSysObjects
UNION SELECT 2 FROM MSysObjects
UNION SELECT 3 FROM MSysObjects
UNION SELECT 4 FROM MSysObjects
UNION SELECT 5 FROM MSysObjects
UNION SELECT 6 FROM MSysObjects
UNION SELECT 7 FROM MSysObjects
UNION SELECT 8 FROM MSysObjects
UNION SELECT 9 FROM MSysObjects) AS D,
(SELECT 0 AS Enumerate FROM MSysObjects
UNION SELECT 1 FROM MSysObjects
UNION SELECT 2 FROM MSysObjects
UNION SELECT 3 FROM MSysObjects
UNION SELECT 4 FROM MSysObjects
UNION SELECT 5 FROM MSysObjects
UNION SELECT 6 FROM MSysObjects
UNION SELECT 7 FROM MSysObjects
UNION SELECT 8 FROM MSysObjects
UNION SELECT 9 FROM MSysObjects) AS E
WHERE ([A].[Enumerate]+[B].[Enumerate]+[C].[Enumerate]+[D].[Enumerate]+[E].[Enumerate])=5; | |
| |
| |
| |
|
|
| | А спец табличку завести лень было? 
На 5 табличках у меня декартово множество отрабатывает быстро, а на 10 падает в осадок, а это всего число 10 пытался разложить.  | |
| |
| |
| |
|
|
| |
А спец табличку завести лень было?
|
ога  | |
| |
| |
| |
|
|
| | Сочетанием (combination) из n элементов по m называется множество (неупорядоченный набор) из m различных чисел, принадлежащих множеству 1:n.
Для перебора сочетаний выберем удобное стандартное представление сочетаний, например в виде монотонно возрастающего набора из m чисел, лежащих в диапазоне 1:n и будем перебирать только такие стандартные записи сочетаний.
Состояние вычислительного процесса. Массив x1,...,xm номеров, включенных в сочетание.
Начальное состояние. Принять xi = i для всех i, принадлежащих множеству 1:m.
Стандартный шаг. Просматривать компоненты вектора x, начиная с xm, и искать первую компоненту, которую можно увеличить (нельзя увеличить xm = n, xm - 1 = n-1,...). Если такой компоненты не найдется, закончить процесс. В противном случае, пусть k — наибольшее число, для которого xk < n + m - k. Увеличить xk на единицу, а для всех следующих за k-ой компонентой продолжить натуральный ряд от нового значения xk, т.е. положить xi = xk + (i - k) для i > k.
Литература
1. Романовский И.В. Дискретный Анализ. — СПб.: Невский диалект, 2000 — 2003.
http://rain.ifmo.ru/cat/view.php/vis/combinations/combinations-2003 | |
| |
| |
| |
|
|
| | http://www.gmmcc.com.ua/gmmcc/index.php?option=com_content&task=view&id=130&Itemid=76
При реализации процедуры декорреляции Грамма-Шмидта желательно осуществить нормировку дисперсии, дополнительно улучшающую обусловленность матрицы декоррелирующих преобразований cond(D-1).
 | |
| |
| |
| |
|
|
| | Напомню, что число битов экспоненциально. Это означает, что затраты на перебор каждых n битов пропорциональны 2^n. Чтобы это было легче представить, напомним, что:
* 64 бита: 18446744073709551616 возможных ключей
* 128 бит: 34028236692093846346337460743176821 1456 возможных ключей
* 256 бит: 11579208923731619542357098500868790 78532699846656405640394575840079131 29639936 возможных ключей
 | |
| |
| |
| |
|
|
| | Ха, биты.
Тут гораздо веселее:
(Число+1)^Число | |
| |
| |
| |
|
|
| | http://www.cyberforum.ru/post662474.html
счастливый билет  | |
| |
| |
| |
|
|
| | То что алгоритм времяемкий догадывался.
Возникла мысль находить оптимальное время выполнения процесса, состоящего из нескольких работ, со своими задержками друг относительно друга.
Типа нужно на одном станке:
Работа_1 - 20 ед., время 2
Работа_2 - 10 ед. время 1,7 (задержка 0,5 от Работы_1)
Работа_3 - 7 ед. время 3 (задержка 0,5 от Работы_2)
Работа_4 - 1 ед. время 2,5 - станок другой
Такую последовательность работ нужно сделать 100 раз.
Задача найти наименьшее время выполенния.
Ежу понятно что минимальные задержки если делать весь объем Работа_1, потом всё Работа_2 и затем Работа_3, но каждая порция запускает дальше работы (работа_4) - так что в таком случае Работа_4 начнется фиг знает когда.
Если делать строго по одной порции - максимальное время задержки (простой).
Где-то должно быть так -
работа_1 - по 20 ед. в объеме 30 исполнений
работа_2 - по 10 ед. в объеме 30 исполнений (задержка 0,5 от Работы_1)
работа_3 - по 7 ед. в объеме 30 исполнений (задержка 0,5 от Работы_2)
работа_1 - по 20 ед. в объеме 70 исполнений (задержка 0,5 от Работы_3)
работа_2 - по 10 ед. в объеме 70 исполнений (задержка 0,5 от Работы_1)
работа_3 - по 7 ед. в объеме 70 исполнений (задержка 0,5 от Работы_2)
или какими-то другими порциями
вот для этого и хотел получить все возможные варианты т.е. слагаемые числа 100.
думаю алгоритм должен быть.
п.с. цифры брал с головы.
п.с.с. вот красиво назвал - оптимальное запараллеливание заготовительных работ и конвейера сборки для минимизации временных затрат.  | |
| |
| |
| |
|
|
| | а может есть другой алгоритм - который анализирует время работа_1+работа_2+работа_3 и время четвертой работы.  | |
| |
| |
| |
|
|
| | вообще-то это целое направление исследований :)
т.н. исследование операций - вот в этой книжке много и хорошо написано
http://www.williamspublishing.com/Books/5-8459-0740-3.html
еще можно погуглить "теория расписаний" | |
| |
| |
| |
|
|
| | Как-то пытался изобрести нечто подобное, но:
Количество факторов, влияющих на выполнение процесса по расчету, и неопределенность величины вносимой ими погрешности такая, что фактически, перерасчет пришлось-бы проводить ежечасно.
Например:
1. Сломался погрузчик - пипец, другого такой грузоподъемности нет.
2. Сломался кран балка - пипец, слесари хз где, электриков фиг найдешь...
3. Кладовщица: то на больничном, то на обеде, то топливо принимает, то баллоны выдает - пипец.
4. Брак в заготовке - пока актирование, пока то да се...
5. Инструмент попался говно - производительность упала.
6. , 7., 8 ....
В общем попа это (в наших местных условиях).  | |
| |
| |
| |
|
|
| |
Public Sub xvariant(num&, k&, l&)
Dim n&, i&
Static c$
If num = 0 Then
Debug.Print c
c = ""
Else
For i = 1 To k
If num - i >= 0 Then
c = c & " " & i
xvariant num - i, i, l + 1
End If
Next i
End If
End Sub
|
xvariant 5,5,1
1 1 1 1 1
2 1 1 1
2 1
3 1 1
2
4 1
5
|
 | |
| |
| |
| |
|
|
| | ээээ 2+3 нету чёта 
хтя он я вно должен был быть там где щяс просто 2 стоит :)
не, поторопился, гдето недоработал  | |
| |
| |
|
|
| |
|
|
| | но направление верное :)) блбуду  | |
| |
| |
|
|
|
|
| |
 11 Кб. |
|
| | у мну вот так | |
| |
| |
|
|
|
|
| |
 10 Кб. |
|
| | а вот получше
тока чёта задвояица | |
| |
| |
|
|
| |
 12 Кб. |
|
| | и в таблицу пихает полно записей ..... | |
| |
| |
|
|
| |
 14 Кб. |
|
| | 8+2 = 2+8 -да интересно 
и пополам нету | |
| |
| |
|
|
| |
|
|
| | у меня архив не открываецца
а ты можешь код пульнуть сюда? чобы сразу глянуть?  | |
| |
| |
| |
|
|
| | чиста поржать
Public Sub xvariant(num&, k&, l&, Optional c$ = "")
Dim i&, a&
If num = 0 Then
c = IIf(l - Eval(c) > 0, c & "+" & (l - Eval(c)), c)
Debug.Print Replace(c, "+", " ")
c = ""
Else
For i = 1 To k
a = num - i
If a >= 0 Then
c = c & "+" & i
xvariant a, i, l, c
End If
Next i
End If
End Sub
|
но есть повторы
xvariant 7,7,7
1 1 1 1 1 1 1
2 1 1 1 1 1
2 1 1 1 2
2 1 4
3 1 1 1 1
2 1 1 3
2 5
3 1 3
4 1 1 1
2 1 4
3 4
5 1 1
2 5
6 1
7
|
ну и дальше 10ти не тестировал 
зю! на 100 нельзя  | |
| |
| |
| |
 13 Кб. |
|
| | у мну вот так
осталось фигня - умножить, сложить и найти минимум
| это как ?  | |
| |
| |
|
|
| |
|
|
| | поле =255 символов
надо мемо попробовать
хотя нет - больше 100 Eval отказывается суммировать
===============================================
а без плюсиков - разрешается разлагать?  | |
| |
| |
| |
|
|
| | да :) только наверное там лучше(?) с коллекцией или массивчегом поиграться :)
но это так, именно поиграться...  | |
| |
| |
| |
|
|
| | точно я тоже хотел сначала массивчик - но до каких размеров котт собирается догнать расклад -вот в чём у мну вопрос........ 
я думал ему сотни хватит с головой, а он 101 бабахает
интересно - какие цели он преследует....
побаловаться? чи шо? | |
| |
| |
| |
|
|
| | все алгоритм более сложен - потом.
нужно сравнить всремя цикла с временем последующей операцией, ее объемом, и найти минимум исходя из этих данных.
типа время цикла в 2 раза меньше времени операции - за время операции Цикл производит объем на 2 последующие операции. и т.д. но как оптимизировать чтобы сказать после запуска 15 циклов (объем на 30 операций) можно запускать циклы с объемом 20х или вообще делать объем первой операции, потом для второй, потом для третьей операции и заготовительные работы могут начинаться на что-то еще.
короче - шо тут думать - прыгать надо!!!  | |
| |
| |
|
|
| |
|
|
| | на массивчеге, но выводит результат в строку
Public Sub xvar(num&, k&, l&, Optional c = Null)
Dim i&, a&, s$
Static j&
If num = 0 Then
a = 0: For i = 0 To l: a = a + Nz(c(i), 0): Next i
c(j) = IIf(l - a > 0, l - a, c(j))
s = ""
For i = 0 To l: s = s & " " & c(i): Next i
Debug.Print s
j = 0: ReDim c(0 To l)
Else
If j = 0 Then ReDim c(0 To l)
For i = 1 To k
a = num - i
If a >= 0 Then
c(j) = i: j = j + 1
xvar a, i, l, c
End If
Next i
End If
End Sub
|
| |
| |
| |
| |
|
|
| | Интересные картинки, вот тока надписи - на иноязыке.......
http://www.home.versatel.nl/vspickelen/Largefiles/LargeInt.htm
|
| |
| |
| |
| |
|
|
| | по одной из ссылок напоролся вот на что
http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B_%D0%93%D0%B8%D0%BB%D1%8C%D0%B1%D0%B5%D1%80%D1%82%D0%B0
|
мозк закипает по тихоньку | |
| |
| |
| |
|
|
| | и понесло меня дальше
http://ru.vlab.wikia.com/wiki/Упаковка_шаров
все хватит лучше буду грузить чугуний | |
| |
| |
| |
|
|
| | Даааааа
Я свои шары - уже давно упаковал...
И особо не заморачивался про 3D пространство.... само собой всё получилось. 
и про многочлен тоже не заморачивался - нафига оно мне я же не многожёнец. | |
| |
| |