En informática , una matriz irregular , también conocida como matriz dentada [1] o matriz irregular [2], es una matriz de matrices cuyos miembros pueden tener longitudes diferentes [3] , lo que produce filas de bordes dentados cuando se visualizan como salida. Por el contrario, las matrices bidimensionales son siempre rectangulares [4], por lo que las matrices dentadas no deben confundirse con las matrices multidimensionales , pero las primeras se utilizan a menudo para emular las últimas.
Las matrices de matrices en lenguajes como Java, PHP, Python (listas multidimensionales), Ruby, C#.NET, Visual Basic.NET , Perl, JavaScript, Objective-C, Swift y Atlas Autocode se implementan como vectores Iliffe .
En C# y Java [5] se pueden crear matrices irregulares con el siguiente código: [6]
int [][] c ; c = new int [ 2 ][]; // crea 2 filas c [ 0 ] = new int [ 5 ]; // 5 columnas para la fila 0 c [ 1 ] = new int [ 3 ]; // crea 3 columnas para la fila 1
En C y C++ , se puede crear una matriz irregular (en la pila) utilizando el siguiente código:
int fila_de_nido0 [] = { 0 , 1 }; int fila_de_nido1 [] = { 1 , 2 , 3 }; int * dentado [] = { fila_de_nido0 , fila_de_nido1 };
En C/C++, también se pueden crear matrices irregulares (en el montón) con una matriz de punteros:
int * irregular [ 5 ]; dentado [ 0 ] = malloc ( tamaño de ( int ) * 10 ); dentado [ 1 ] = malloc ( tamaño de ( int ) * 3 );
En C++/CLI , se pueden crear matrices irregulares con el código: [7]
usando el espacio de nombres System ; int main () { array < array < double > ^> ^ Arrayname = gcnew array < array < double > ^> ( 4 ); // el array contiene 4 //elementos devuelve 0 ; }
En Fortran , se puede crear una matriz irregular utilizando tipos derivados con componentes asignables:
tipo :: Jagged_type entero , asignable :: fila (:) fin tipo Jagged_type tipo ( Jagged_type ) :: Jagged ( 3 ) Jagged ( 1 )% fila = [ 1 ] Jagged ( 2 )% fila = [ 1 , 2 ] Jagged ( 3 )% fila = [ 1 , 2 , 3 ]
En Python , las matrices irregulares no son nativas, pero se pueden usar listas por comprensión para crear una lista multidimensional que admita cualquier matriz dimensional: [8]
multi_list_3d = [[[] para i en rango ( 3 )] para i en rango ( 3 )] # Produce: [[[], [], []], [[], [], []], [[], [], []]]multi_list_5d = [[[] para i en rango ( 5 )] para i en rango ( 5 )] # Produce: [[[], [], [], []], [[], [], [], []], [[], [], [], [], []], [[], [], [], [], [], []], [[], [], [], []]]