Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Минимальное кол-во множеств, сост из заданных элементов - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Минимальное кол-во множеств, сост из заданных элементов (Макросы/Sub)
Минимальное кол-во множеств, сост из заданных элементов
VLD Дата: Вторник, 28.06.2016, 10:20 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
Имеется следующая задача.

Дано: Множество чисел М, количество чисел множества N. Например 5. Из набора в 5 чисел можно составить 5!/2!/3! = 10 не повторяющихся пар.

1-2 1-3 1-4 1-5 2-3 2-4 2-5 3-4 3-5 4-5

Задаем количество чисел в маленьком множестве m, n<N, где m принадлежит M (множество m состоит только из чисел множества M), например 3

Необходимо составить минимальное количество разных множеств m которые бы содержали все пары чисел множества M

Например: 1-2-3 1-4-5 2-4-5 3-4-5 - эти 4 множества m содержат все пары множества M ( с повторениями конечно)

Заранее спасибо за помощь и советы.
[moder]Читаем внимательно п3 Правил форума[/moder]
К сообщению приложен файл: 0913330.xlsx(12Kb)


Сообщение отредактировал VLD - Вторник, 28.06.2016, 11:19
 
Ответить
СообщениеДобрый день!
Имеется следующая задача.

Дано: Множество чисел М, количество чисел множества N. Например 5. Из набора в 5 чисел можно составить 5!/2!/3! = 10 не повторяющихся пар.

1-2 1-3 1-4 1-5 2-3 2-4 2-5 3-4 3-5 4-5

Задаем количество чисел в маленьком множестве m, n<N, где m принадлежит M (множество m состоит только из чисел множества M), например 3

Необходимо составить минимальное количество разных множеств m которые бы содержали все пары чисел множества M

Например: 1-2-3 1-4-5 2-4-5 3-4-5 - эти 4 множества m содержат все пары множества M ( с повторениями конечно)

Заранее спасибо за помощь и советы.
[moder]Читаем внимательно п3 Правил форума[/moder]

Автор - VLD
Дата добавления - 28.06.2016 в 10:20
Roman777 Дата: Вторник, 28.06.2016, 10:40 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 720
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Не понятна запись "5!/2!/3! = 10".


Много чего не знаю!!!!
 
Ответить
СообщениеНе понятна запись "5!/2!/3! = 10".

Автор - Roman777
Дата добавления - 28.06.2016 в 10:40
VLD Дата: Вторник, 28.06.2016, 11:03 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Roman777, !-факториал. Формула из комбинаторики количество вариантов без повторений n из N = N!/ n! /(N-n)!
 
Ответить
СообщениеRoman777, !-факториал. Формула из комбинаторики количество вариантов без повторений n из N = N!/ n! /(N-n)!

Автор - VLD
Дата добавления - 28.06.2016 в 11:03
Roman777 Дата: Вторник, 28.06.2016, 15:41 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 720
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
VLD, Правильно ли я понимаю, что 1-2-3 содержит 1-2, 2-3 и 1-3 соответственно?


Много чего не знаю!!!!
 
Ответить
СообщениеVLD, Правильно ли я понимаю, что 1-2-3 содержит 1-2, 2-3 и 1-3 соответственно?

Автор - Roman777
Дата добавления - 28.06.2016 в 15:41
VLD Дата: Вторник, 28.06.2016, 16:29 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Roman777, Да, правильно понимаете. Порядок в паре не важен. т.е 2-3 и 3-2 это тоже самое
 
Ответить
СообщениеRoman777, Да, правильно понимаете. Порядок в паре не важен. т.е 2-3 и 3-2 это тоже самое

Автор - VLD
Дата добавления - 28.06.2016 в 16:29
Roman777 Дата: Вторник, 28.06.2016, 17:56 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 720
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
VLD, Первая часть выглядит так:
[vba]
Код
Function f(ByVal i_n As Integer) As Long
Dim i&
f = 1
For i = 1 To i_n
f = f * i
Next i
End Function
Sub fff3()
Dim N&, n1&, i&, k&, i1&, i2&, k1&
Dim M&(), m1&(), P$()
Dim o As Object, key1 As String, key2 As String
Set o = CreateObject("Scripting.Dictionary")
Set rng = Application.InputBox("Укажите ячейки множества M", "Множество", Type:=8)
N = rng.Rows.Count
cl& = rng.Column
rw& = rng.Rows(1).Row
'N = 5
n1 = 3
ReDim M(N)
For i = 1 To N
M(i) = Cells(rw + i - 1, cl)
Next i
k = f(N) / f(2) / f(N - 2)
' задуманно, что в P пары из мн-ва M
ReDim P(k)
For i = 1 To N
For i1 = 1 To N
    If M(i) <> M(i1) Then
        key1 = M(i) & "-" & M(i1)
        key2 = M(i1) & "-" & M(i)
        If Not (o.exists(key1) And o.exists(key2)) Then
        k1 = k1 + 1
        P(k1) = M(i) & "-" & M(i1)
        o.Add key1, k1
        o.Add key2, k1
        End If
    End If
Next i1
Next i
For i = 1 To k1
Cells(rw + i - 1, cl + 1).NumberFormat = "@"
Cells(rw + i - 1, cl + 1) = P(i)
Next i
End Sub
[/vba]
Вообще, честно, трудно пока понять как сделать под разное число символов, из которых должны состоять группы в множестве m. Но конкретно для 3х, вродебы понятно как делать...
[p.s.]как говориться, поспешишь... Исправил 1й этап[/p.s.]


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Вторник, 28.06.2016, 21:06
 
Ответить
СообщениеVLD, Первая часть выглядит так:
[vba]
Код
Function f(ByVal i_n As Integer) As Long
Dim i&
f = 1
For i = 1 To i_n
f = f * i
Next i
End Function
Sub fff3()
Dim N&, n1&, i&, k&, i1&, i2&, k1&
Dim M&(), m1&(), P$()
Dim o As Object, key1 As String, key2 As String
Set o = CreateObject("Scripting.Dictionary")
Set rng = Application.InputBox("Укажите ячейки множества M", "Множество", Type:=8)
N = rng.Rows.Count
cl& = rng.Column
rw& = rng.Rows(1).Row
'N = 5
n1 = 3
ReDim M(N)
For i = 1 To N
M(i) = Cells(rw + i - 1, cl)
Next i
k = f(N) / f(2) / f(N - 2)
' задуманно, что в P пары из мн-ва M
ReDim P(k)
For i = 1 To N
For i1 = 1 To N
    If M(i) <> M(i1) Then
        key1 = M(i) & "-" & M(i1)
        key2 = M(i1) & "-" & M(i)
        If Not (o.exists(key1) And o.exists(key2)) Then
        k1 = k1 + 1
        P(k1) = M(i) & "-" & M(i1)
        o.Add key1, k1
        o.Add key2, k1
        End If
    End If
Next i1
Next i
For i = 1 To k1
Cells(rw + i - 1, cl + 1).NumberFormat = "@"
Cells(rw + i - 1, cl + 1) = P(i)
Next i
End Sub
[/vba]
Вообще, честно, трудно пока понять как сделать под разное число символов, из которых должны состоять группы в множестве m. Но конкретно для 3х, вродебы понятно как делать...
[p.s.]как говориться, поспешишь... Исправил 1й этап[/p.s.]

Автор - Roman777
Дата добавления - 28.06.2016 в 17:56
Gustav Дата: Вторник, 28.06.2016, 18:46 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1247
Репутация: 490 ±
Замечаний: 0% ±

начинал с Excel 4.0...
Roman777, переменные не все описаны :( нет привычки? И какие ячейки указать надо? Диапазон-строку с номерами элементов?

P.S. И ReDim m1(N) пропущено. Вы сами-то запускали свою прогу? :)

P.P.S. И если первая часть - это генерация всех возможных пар из элементов множества, то это фактически задача составления расписания кругового чемпионата: http://www.excelworld.ru/forum/3-2995-179290-16-1458397287


Мой tip box - яд 41001663842605

Сообщение отредактировал Gustav - Вторник, 28.06.2016, 18:59
 
Ответить
СообщениеRoman777, переменные не все описаны :( нет привычки? И какие ячейки указать надо? Диапазон-строку с номерами элементов?

P.S. И ReDim m1(N) пропущено. Вы сами-то запускали свою прогу? :)

P.P.S. И если первая часть - это генерация всех возможных пар из элементов множества, то это фактически задача составления расписания кругового чемпионата: http://www.excelworld.ru/forum/3-2995-179290-16-1458397287

Автор - Gustav
Дата добавления - 28.06.2016 в 18:46
Roman777 Дата: Вторник, 28.06.2016, 20:38 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 720
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Gustav, да, запускал, просто изначально не под пример делал... а просто в массивах... Потом времени уже было немного переделать... вот и накосячил...
Вот такое было... но надо переделать чуть-чуть...

Делал для конкретного случая с кол-вом элементов множеств m равным 3... для произвольного пока мне думки не хватает... я и эту то версию полностью нормально не потестил... Поэтому и взял отсюда только первую часть.
[p.s.]6е сообщение поправил.[/p.s.]
Исправил парочку (из некоторых) глупостей:


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Среда, 29.06.2016, 13:04
 
Ответить
СообщениеGustav, да, запускал, просто изначально не под пример делал... а просто в массивах... Потом времени уже было немного переделать... вот и накосячил...
Вот такое было... но надо переделать чуть-чуть...

Делал для конкретного случая с кол-вом элементов множеств m равным 3... для произвольного пока мне думки не хватает... я и эту то версию полностью нормально не потестил... Поэтому и взял отсюда только первую часть.
[p.s.]6е сообщение поправил.[/p.s.]
Исправил парочку (из некоторых) глупостей:

Автор - Roman777
Дата добавления - 28.06.2016 в 20:38
Roman777 Дата: Суббота, 09.07.2016, 18:05 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 720
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
В кой-то веке дошел до задачки. Меня заинтересовала. Сделал, как вариант. Мб создаёт и не самое минимальное кол-во множеств "m", но определённые "стремления" к этому в алгоритме существуют. На относительно небольших (насколько небольших точно сказать не могу) множествах "М" и "m", работает, вродебы, хорошо.

В файле пример на 2м листе.
К сообщению приложен файл: 0913330-1-.xlsm(41Kb)


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Суббота, 09.07.2016, 18:05
 
Ответить
СообщениеВ кой-то веке дошел до задачки. Меня заинтересовала. Сделал, как вариант. Мб создаёт и не самое минимальное кол-во множеств "m", но определённые "стремления" к этому в алгоритме существуют. На относительно небольших (насколько небольших точно сказать не могу) множествах "М" и "m", работает, вродебы, хорошо.

В файле пример на 2м листе.

Автор - Roman777
Дата добавления - 09.07.2016 в 18:05
Michael_S Дата: Воскресенье, 10.07.2016, 23:03 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1731
Репутация: 332 ±
Замечаний: 0% ±

Excel2016
Вот как-то так.
В основном все пары без повторов.
К сообщению приложен файл: _-_.xlsm(43Kb)


ЯД: 41001136675053
WM: R389613894253
 
Ответить
СообщениеВот как-то так.
В основном все пары без повторов.

Автор - Michael_S
Дата добавления - 10.07.2016 в 23:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Минимальное кол-во множеств, сост из заданных элементов (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!