2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Поиск элемента по номеру строки и столбца
Сообщение11.02.2016, 17:14 
Аватара пользователя


05/08/11
36
Калининград
Здравствуйте, никак не могу подступиться к решению одной задачи. Есть таблица, состоящая из $n$ столбцов и набор из $m$ пронумерованных элементов (например чисел от 0 до $m$). Из них строится следующий массив (для примера взял $n=3$, $m=3$):
0 0 0
0 0 1
0 0 2
0 0 3
0 1 1
0 1 2
0 1 3
0 2 2
0 2 3
0 3 3
1 1 1
1 1 2
1 1 3
1 2 2
1 2 3
1 3 3
2 2 2
2 2 3
2 3 3
3 3 3
Из этой таблицы видно, что тут выписаны все сочетания с повторениями (для данных $n$ и $m$). Задача состоит в том, чтобы по номеру строки $i$ и столбца $j$, уметь находить то, какой элемент стоит на пересечении $i$-й строки и $j$-го столбца, для произвольных $n$ и $m$. Существует ли решение для данной задачи? Если да, то как к нему придти?

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение11.02.2016, 19:59 
Заслуженный участник


10/01/16
2318
Alex Fox
Явных формул, боюсь, мы не получим.
Но "подступиться" можно, например, так.
Пусть $C_{n,m}$ количество строчек в вашей таблице.
Посмотрим на таблицу внимательно: шо мы видим?
Есть куча строчек, где первая цифра - 0, и есть еще куча - где не 0.
Сколько чисел в первой куче? Написав на первом месте 0, мы получили точно такую же задачу, токо с меньшим $n$.
Сколько - во второй? Если низя на первом (и на последующих) месте писать 0, а все остальное моно - дык это опять такая же задача, но с меньшим $m$. И что-то это сильно напоминает... Ба, да это ж треугольник Паскаля! Его элементы - биноминальные к-ты.
Ой, надо же , $C_{n,m} = C^n_{m+n}$, как и должно было быть для сочетаний с повторениями.
Давайте только считать наш тр-к прямоугольным...Повернем его, и уложим на первый квадрант клетчатой плоскости.
Нумерация клеточек: от 0 до...по горизонтали, и такая же - по вертикали.
Пусть $N$ номер строчки таблицы, в которой мы хотим записать число, $M=C_{n,m}$ - общее кол-во чисел в таблице, число $M$ стоит в клетке с номерами $(n,m)$. Ясно, что должно быть $N\leqslant M$. Число $M$ равно сумме двух: левого $L$, и нижнего $D$ соседей. Пусть $X=M-N$.
Будем идти из $M$ по столбцу вниз, пока не встретим число, меньшее $X$. Тут мы затормозим; количество сделанных шагов и есть искомый первый символ. Далее надо пересчет, рекурсия, и т.д.
Т.е., алгоритм вполне реализуем; бин. к-ты можно считать последовательно, сложность алгоритма - порядка $mn$.

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение11.02.2016, 20:23 
Заслуженный участник


27/04/09
28128
А ещё если таблица в натуральную величину не слишком большая (влезает в кэш), а обращения к ней очень частые и без видимого порядка, её можно всю предвычислить. Если, например, нужно перебирать сочетания по-очереди, есть более эффективные алгоритмы. Это я на всякий случай.

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение16.02.2016, 14:11 
Аватара пользователя


05/08/11
36
Калининград
Цитата:
Повернем его, и уложим на первый квадрант клетчатой плоскости.


Этот момент не понятен. Каким именно образом необходимо повернуть и уложить треугольник?

Цитата:
Пусть $N$ номер строчки таблицы, в которой мы хотим записать число, $M=C_{n,m}$ - общее кол-во чисел в таблице, число $M$ стоит в клетке с номерами $(n,m)$.


О какой таблице идет речь? Об исходной или о той, которая получилась в результате манипуляций с треугольником?

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение16.02.2016, 19:44 
Заслуженный участник
Аватара пользователя


23/07/08
10908
Crna Gora
Alex Fox
Привязаны ли Вы к конкретному способу нумерации сочетаний, или подойдёт любой хороший? У меня есть лучше. :-)
Есть смысл использовать универсальный порядок нумерации, не зависящий от $n$. (Хотелось бы также, чтобы он не зависел и от $m$, но такого, наверное, нет.) Вот он для $m=3$, в оффтопе:

(Оффтоп)

0 0 0
0 0 1
0 1 1
1 1 1
0 0 2
0 1 2
1 1 2
0 2 2
1 2 2
2 2 2
0 0 3
0 1 3
1 1 3
0 2 3
1 2 3
2 2 3
0 3 3
1 3 3
2 3 3
3 3 3
0 0 4
0 1 4
1 1 4
0 2 4
1 2 4
2 2 4
0 3 4
1 3 4
2 3 4
3 3 4
0 4 4
1 4 4
2 4 4
3 4 4
4 4 4
...
Здесь перечислены все сочетания с повторениями для $n=4$. Чтобы перечислить все для $n=5,6,7...$, нужно добавить новые элементы по очевидному алгоритму, но, что важно, при этом не изменится нумерация уже выписанных элементов. Таким образом, $n$ в окончательную формулу/алгоритм входить не будет.

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение16.02.2016, 20:19 
Заслуженный участник


10/01/16
2318
Alex Fox в сообщении #1099864 писал(а):
тот момент не понятен.


Треугольник Паскаля, как его рисуют в книжках, не очень удобен. Удобнее его считать - совпадающим с первым квадрантом плоскости. Порежем квадрант на единичные квадратики. Нумерация столбцов и строк - от 0. Заполним клетки числами: в нижней строке (ее номер - 0) и в самом левом столбце (он так же имеет номер 0) напишем 1. Все остальные клетки заполним по правилу: число в клетке равно сумме двух своих сосоедей - слева и снизу). Это и будет тр-к Паскаля. Хорошо известно, что число, стоящее на пересечении $n$ - го столбца и $k-$ й строки есть биноминальный к-т $C^n_{n+k} = C^k_{n+k}$.

Alex Fox в сообщении #1099864 писал(а):
таблице идет речь? Об исходной

Да.

Видимо, я переборщил, пытаясь уже и алгоритм некий предложить. Давайте отыграем назад: бог с ним, с тр-ком, разберем лишь идею решения, а алгоритм Вы сочините такой, как вам нравится.
Мы имеем (в Ваших обозначениях) таблицу из $ C^m_{m+n}$ строчек. В этой таблице, в первых $C^m_{m+n-1}$ строчках, первый символ равен 0, в остальных (их $C^{m-1}_{m+n-1}$) первый символ не равен 0. Если вы хотите заполнить строчку с номером $N$, то можно делать так: при N $\leqslant C^m_{m+n-1} $ первый символ - 0. Напишем его, после этого получилась такая же задача, только $n$ уменьшилось на 1. Если же $N >  C^m_{m+n-1}$, то первый символ (да и все последующие) - не 0. Заменяем ваше $N$ на $N - C^m_{m+n-1}$ - и получаем такую же задачу, но с меньшим (на 1) числом $m$.

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение17.02.2016, 08:52 


01/12/11

1047
Если известен алгоритм построения таблицы, то выбор заданного элемента не представляет трудностей.

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение18.02.2016, 15:13 
Аватара пользователя


05/08/11
36
Калининград
svv в сообщении #1099958 писал(а):
Привязаны ли Вы к конкретному способу нумерации сочетаний, или подойдёт любой хороший? У меня есть лучше. :-)


Нужно решить задачу для того способа построения таблицы, который я написал в первом посте.

Цитата:
Видимо, я переборщил, пытаясь уже и алгоритм некий предложить. Давайте отыграем назад: бог с ним, с тр-ком, разберем лишь идею решения, а алгоритм Вы сочините такой, как вам нравится.


На основании ваших разъяснений удалось написать небольшую программу, которая решает данную задачу для небольших $n$ и $n$. Для больших значений программа аварийно завершается. Возможно ли осуществить такой алгоритм, чтобы программе, перед тем как вывести на экран интересующий элемент, не нужно было выполнять вычисления с факториалами и сочетаниями? И еще, меня все таки интересует способ с треугольником.

Цитата:
Пусть $N$ номер строчки таблицы, в которой мы хотим записать число, $M=C_{n,m}$ - общее кол-во чисел в таблице


$C_{n,m}$ - это количество строк в таблице, почему тогда вы пишите, что это количество числе в таблице?

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение18.02.2016, 15:29 
Заслуженный участник
Аватара пользователя


23/07/08
10908
Crna Gora
Alex Fox в сообщении #1100387 писал(а):
Нужно решить задачу для того способа построения таблицы, который я написал в первом посте.
В принципе, это не мешает, при желании, воспользоваться «универсальной нумерацией». Ваша получается из моей, если изменить порядок следования столбцов на обратный, изменить порядок следования строк на обратный, и заменить каждое число $d$ в таблице на $n-d$.

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение18.02.2016, 15:39 
Аватара пользователя


05/08/11
36
Калининград
svv в сообщении #1099958 писал(а):
Здесь перечислены все сочетания с повторениями для $n=4$. Чтобы перечислить все для $n=5,6,7...$, нужно добавить новые элементы по очевидному алгоритму, но, что важно, при этом не изменится нумерация уже выписанных элементов. Таким образом, $n$ в окончательную формулу/алгоритм входить не будет.


Количество столбцов тоже произвольно, я лишь для примера выбрал $m=3$

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение18.02.2016, 15:43 
Заслуженный участник
Аватара пользователя


23/07/08
10908
Crna Gora
Да, я это учитываю, у меня тоже $m=3$ только для примера. Для $m=4$ будет другая таблица, бесконечная по вертикали, и тоже для всех $n$ сразу.

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение18.02.2016, 16:03 
Аватара пользователя


05/08/11
36
Калининград
svv в сообщении #1100392 писал(а):
Да, я это учитываю, у меня тоже $m=3$ только для примера. Для $m=4$ будет другая таблица, бесконечная по вертикали, и тоже для всех $n$ сразу.


Тут еще есть такой нюанс, поскольку, как уже сказали, простых формул тут никаких нет, то приходится писать программу, которая бы выполняла нужные действия и при больших числах она не справляется. Так же нельзя чтобы программа хранила в памяти массивы.

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение18.02.2016, 16:04 
Заслуженный участник
Аватара пользователя


23/07/08
10908
Crna Gora
А каковы типичные значения $m$ и $n$ ?

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение18.02.2016, 16:06 
Аватара пользователя


05/08/11
36
Калининград
Типичных значений нет, чем больше тем лучше

 Профиль  
                  
 
 Re: Поиск элемента по номеру строки и столбца
Сообщение18.02.2016, 16:18 
Заслуженный участник
Аватара пользователя


23/07/08
10908
Crna Gora
Формулу, в принципе, можно написать. Она будет рекуррентной, вот в каком смысле: вычисление $d_{i,j}$ (стоящего в $i$-й строке и $j$-м столбце) опирается на найденное ранее $d_{i, j-1}$ (в той же строке) и так далее. Кроме того, там будет использоваться не совсем обычная функция, которую можно назвать «обратный биномиальный коэффициент», дающая $n$ по известному $C^m_{n+m}$ и $m$, или что-то вроде этого. Если такое подойдёт, могу подумать в этом направлении.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group