En informática , una matriz irregular , también conocida como matriz irregular [1] o matriz irregular [2] es una matriz de matrices cuyos miembros pueden tener diferentes longitudes, [3] produciendo filas de bordes irregulares cuando se visualiza como producción. Por el contrario, los arreglos bidimensionales son siempre rectangulares [4] por lo que los arreglos irregulares no deben confundirse con los arreglos multidimensionales , pero los primeros se usan a menudo para emular a los segundos.
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 de Iliffe .
En C# y Java [5] se pueden crear matrices irregulares con el siguiente código: [6]
int [][] c ; c = nuevo 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) usando el siguiente código:
int jagged_row0 [] = { 0 , 1 }; int fila_dentada1 [] = { 1 , 2 , 3 }; int * irregular [] = { jagged_row0 , jagged_row1 };
En C/C++, también se pueden crear matrices irregulares (en el montón) con una matriz de punteros:
int * irregular [ 5 ]; irregular [ 0 ] = malloc ( tamaño de ( int ) * 10 ); irregular [ 1 ] = malloc ( tamaño de ( int ) * 3 );
En C++/CLI , se puede crear una matriz irregular con el código: [7]
usando el sistema de espacio de nombres ; int main () { matriz < matriz <doble> ^> ^ Nombre de matriz = gcnew matriz < matriz <doble> ^ > ( 4 ) ; // la matriz contiene 4 //elementos return 0 ; }
En Fortran , se puede crear una matriz irregular utilizando tipos derivados con componentes asignables:
tipo :: Jagged_type entero , asignable :: fila (:) tipo final 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 el rango ( 3 )] para i en el rango ( 3 )] # Produce: [[[], [], []], [[], [], []], [[ ], [], []]]multi_list_5d = [[[] para i en el rango ( 5 )] para i en el rango ( 5 )] # Produce: [[[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], []], [[], [] , [], [], []]]