2014 dxdy logo

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

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


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


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

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

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Поиск тетраэдра максимальной размерности
Сообщение24.06.2009, 14:38 


24/06/09
3
Есть такая задача:
дан список точек в n-мерном пространстве. Найти среди них набор вершин тетраэдра, такой, что размерность этого тетраэдра будет максимально возможной.

Мой вопрос в том, будет ли правильным следующий алгоритм, и можно ли найти что-то проще:
1) берем две произвольные не совпадающие друг с другом точки. У нас получился одномерный тетраэдр.
2) если размерность нашего тетраэдра равна размерности пространства n, то останавливаемся.
3) затем выбираем из списка оставшихся точек одну точку A. Если ранг матрицы, составленной из векторов AX (где X одна из точек имеющегося тетраэдра) будет больше текущей размерности тетраэдра, то добавляем точку A к тетраэдру, в противном случае выкидываем её из списка оставшихся точек.
4) Если еще остались потенциальные точки-вершины, то переходим к пункту 2.

Спасибо.

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


30/01/09
6696
Цитата:
где X одна из точек имеющегося тетраэдра
. Может все точки имеющегося тетраэдра?

 Профиль  
                  
 
 Re: Поиск тетраэдра максимальной размерности
Сообщение24.06.2009, 15:43 


24/06/09
3
мат-ламер в сообщении #224530 писал(а):
Цитата:
где X одна из точек имеющегося тетраэдра
. Может все точки имеющегося тетраэдра?

Имелось в виду то, что для каждой вершины X нашего тетраэдра мы берем координаты вектора AX и считаем ранг матрицы из таких векторов-строчек.

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


30/01/09
6696
Извиняюсь, неправильно понял условие. Вроде всё верно.

-- Ср июн 24, 2009 17:50:20 --

А обосновать это можно так. Размерность текущего симплекса на 1 меньше количества точек в нём, а размерность матрицы, составленной из векторов АХ либо равна количеству точек (в этом случае размерность нового расширенного симплекса увеличивается на 1), либо меньше этого количества ( в этом случае точка отвергается). И если на текущем шаге отвергаются все точки, значит они находятся в аффинной оболочке симплекса.

 Профиль  
                  
 
 Re: Поиск тетраэдра максимальной размерности
Сообщение24.06.2009, 21:52 


24/06/09
3
Все-таки где-то в моём алгоритме ошибка.
На таком наборе точек в семимерном пространстве применение алгоритма к самому списку и к нему же перевёрнутому даёт фигуры разной размерности :|
(3,4,0,2,1,2,1)
(2,4,1,1,2,2,1)
(2,1,3,4,2,0,1)
(2,2,4,2,0,2,1)
(2,1,4,3,2,1,0)
(2,1,4,3,2,0,1)
(2,1,4,2,2,2,0)
(2,1,3,4,2,1,0)

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


18/05/06
13437
с Территории
Предыдущее не читал, много букв. Короче, понятие тетраэдра тут вообще лишнее. Надо один раз найти вектора от, скажем, первой точки ко всем остальным - и один же раз посчитать ранг.

 Профиль  
                  
 
 Re: Поиск тетраэдра максимальной размерности
Сообщение26.06.2009, 06:22 
Заслуженный участник


08/04/08
8556
Так, у Вас есть $k$ точек (ну или векторов), из которых возможно построить $2^k$ множеств точек Каждый симплекс, ну или тетраэдр, взаимно однозначно определяется множеством точек. Множества точек буде обозначать буквами $M$ с индексами. Под словом "симплекс" ниже будем понимать невырожденный симплекс, то есть для которого множество точек $M$ линейно независимо. Теперь, если $M_1 \subset M_2$ и $M_2$ - симплекс, то $M_1$ - симплекс. И наоборот: если $M_1$ - не симплекс, то и $M_2$ - не симплекс (Образно выражаясь, у Вас структура этих множеств - это кусок снизу булеана k-элементого множества). Тогда Вам надо найти среди этих всех $M$ максимальные множества, причем максимальной мощности, либо мощности, не меньшей $n$ (вроде как $n$ нужна только здесь, больше нигде). Для каждого множества $M$ у нас есть способ определить, является ли оно симплексом - проверить линейную независимость векторов по матрице. Остается организовать оптимальный перебор всех (ну или некоторых) $M$.
Есть такая аналогия: рассматривать каждую точку как вершину графа $G$ мощности $k$, и будем считать, что любая пара вершин множества $M$ соединена ребром тогда и только тогда, когда $M$ - симплекс. Тогда получится, что Вы ищете в графе $G$ клику максимальной мощности или мощности не меньшей $n$, что, как известно, NP- полная задача. Но это только аналогия, так как в графе если $y$ связано с $x_1,...,x_r$ и $\{x_1,...,x_r\}$ - клика, то $\{x_1,...,x_r,y\}$ - клика, а у нас, если $M$ - симплекс, то для $M \cup {y}$ надо проверять матрицу на линейную зависимость и оттуда находить - симплекс ли $M \cup \{y\}$ или нет.
То, что Вы делаете - вариант случайного поиска симплекса, если случайный поиск устраивает, то можете возможное количество раз строить симплексы $\{x_1\}, \{x_1, x_2\},...$ до тех пор, пока не наткнетесь на максимальный, а затем среди множества получившихся выбрать максимальный.
Можно жадный алгоритм + точный перебор. Ищите хоть какой-то максимальный симплекс по Вашей схеме (можно найти несколько и выбрать симплекс максимальной мощности). Пусть его мощность $m$, тогда осуществляете перебор всех $m+1$-элементных множеств, среди них отбираете симплексы, потом пробуете их укрупнять на один элемент, среди укрупненных тоже отбираете симплексы и т.д. до конца, пока их не останется ни одного.
В общем, трудная задача. Я не думаю, что какая-то еще связь может быть между этими множествами, кроме описанной выше, поэтому придется перебирать кусок булеана снизу.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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