Нужна дружественная кеш структура данных для хранения соседей буквы в 2d-массиве - PullRequest
4 голосов
/ 13 февраля 2012

Предположим, что ниже представлен двухмерный массив, над которым мы работаем

a b c d
e f g h
i j k l
m n o p

Окружающим соседом 'f' является [abcegijk].Я пытаюсь создать кеш-дружественную структуру данных для хранения соседа узла.Прямо сейчас у меня есть что-то вроде этого

struct Neighbor{
   size_t neighborPosition[8][2];
   size_t size;
};

typedef size_t Position[2];
typedef Neighbor** NeighborTable;

Обратите внимание, что максимальный сосед узла может быть 8. У кого-нибудь есть какой-нибудь совет?Мне нужна структура для поиска соседей с постоянным временем, поэтому я буду предварительно вычислять соседей каждого узла.

1 Ответ

5 голосов
/ 13 февраля 2012

Каждая ячейка имеет одинаковых соседей с точки зрения их относительного расположения, за исключением краевых ячеек. Но если вы добавите границу (дополнительную строку и столбец в начале и конце) и заполните ее значением, которое позволит вам узнать, что это граница, вам вообще не понадобится какая-либо структура данных для идентификации соседей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...