Cody

Problem 45261. Query every vertices neighbor indices

Input T is a triangulation.

The purpose of this function is to query at once the cell array N of all vertex neighbor indices... of every vertices, nothing less (!)

Output N must be a cell array since of course each vertex may have a different number of neighbors.

For example, for an input filled octahedron whom triangulation is

T = [1, 2, 3;...
     1, 3, 4;...
     1, 4, 5;...
     1, 2, 5;...
     2, 3, 6;...
     3, 4, 6;...
     4, 5, 6;...
     2, 5, 6;...
     2, 3, 4;...
     2, 4, 5;...
     1, 2, 4;...
     2, 4, 6],

then the output N is a 6x1 cell array of integers row vectors, such that :

N(1,1) = {[2, 3, 4, 5]};
N(2,1) = {[1, 3, 4, 5, 6]};
N(3,1) = {[1, 2, 4, 6]};
N(4,1) = {[1, 2, 3, 5, 6]};
N(5,1) = {[1, 2, 4, 6]};
N(6,1) = {[2, 3, 4, 5]};

Indeed vertex #2 is part of triangles [1, 2, 3], [1, 2, 5], [2, 3, 6], [2, 5, 6], [2, 3, 4], [2, 4, 5], [1, 2, 4], and [2, 4, 6], it then admit all the other vertices as neighbors ([1, 3, 4, 5, 6]).

Hypothesis / conditions :

  • a vertex is the neighbor of another if they are linked with an edge in at least one same triangle. A vertex is not neighbor of itself.
  • Output N row order is crucial since row number actually corresponds to the vertex id / index.
  • Output N cells content order doesn't matter, but it doesn't admit any duplicated index / value.

Tip : solving my previous problems, and especially query_vertex_neighbors will help you to fully understand and solve this one.

NB : the question of unreferenced vertices is not tacled here. We just supposed there are not.

Good work Matlab-bro ! :)

Solution Stats

88.89% Correct | 11.11% Incorrect
Last Solution submitted on Jan 13, 2020

Problem Comments

Problem Recent Solvers4

Suggested Problems

More from this Author9