Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

navGraph

Crear objeto navGraph

Desde R2023a

    Descripción

    El objeto navGraph es una estructura de datos gráficos para Navigation Toolbox™ que ayuda a los planificadores basados en búsquedas.

    El objeto navGraph le permite crear un gráfico y realizar cálculos en él. El objeto navGraph admite funcionalidades que los algoritmos de búsqueda de gráficos utilizan frecuentemente. Puede implementar fácilmente Dijkstra, A* o variantes utilizando navGraph.

    En teoría de grafos, los estados representan nodos y los enlaces representan aristas. Los estados y enlaces están representados por su índice de fila correspondiente en la tabla. navGraph es un gráfico dirigido que actualmente admite nombres únicos, sin bucles propios en los bordes.

    Creación

    Descripción

    graph = navGraph crea un objeto navGraph vacío, graph. Agregue estados y enlaces mediante las Funciones de objeto.

    graph = navGraph(states,links) crea un objeto navGraph con nodos especificados como una matriz de estados y bordes especificados como una matriz de enlaces (o nodos finales). Las entradas states y links establecen los valores de las propiedades States y Links, respectivamente.

    graph = navGraph(___,Name=Value) especifica parámetros adicionales utilizando los argumentos de nombre-valor Name y Weight además del argumento de la sintaxis anterior.

    graph = navGraph(digraph) crea un objeto navGraph a partir de los datos presentes en el objeto digraph especificado.

    graph = navGraph(stateTable,linkTable) crea un objeto navGraph con la tabla de estado y la tabla de vínculo especificadas, que contienen los metadatos del gráfico. Las entradas stateTable y linkTable establecen el valor de las propiedades States y Links, respectivamente.

    ejemplo

    graph = navGraph(___,Name=Value) especifica parámetros adicionales utilizando el argumento nombre-valor LinkWeightFcn además de los argumentos de las sintaxis anteriores.

    Argumentos de entrada

    expandir todo

    Vectores de estado, especificados como una matriz en la que cada fila representa un vector de estado.

    Ejemplo: [9 10 0.42; 10 10 0.92; 7 10 0.65]

    Tipos de datos: double

    Vectores de enlace, especificados como una matriz en la que cada fila representa un par de ID de estado como un vector fila de dos elementos de números enteros positivos.

    Ejemplo: [6 1; 7 7; 6 6]

    Tipos de datos: double

    Gráfico dirigido, especificado como un objeto digraph. La primera columna debe ser StateVector en la tabla de nodos de objeto digraph.

    Tabla de estados de los nodos del gráfico, especificada como una tabla con filas que contienen variables que describen los nodos (estados) del gráfico. La primera columna debe ser StateVector, que representa los vectores de estado del entorno. Opcionalmente, puede incluir otras columnas de metadatos, como una columna Name que represente los nombres de los estados.

    Ejemplo: table([9 10 0.42; 10 10 0.92; 7 10 0.65],VariableNames={'StateVector'})

    Tipos de datos: table

    Tabla de enlaces de bordes del gráfico, especificada como una tabla con filas que contienen variables que describen los bordes (vínculos) del gráfico. La primera columna debe ser EndStates, que representa los estados de conexión. Opcionalmente, puede incluir otras columnas de metadatos, como una columna Weight que represente los costos de recorrer los enlaces.

    Ejemplo: table([6 1; 7 7; 6 6],VariableNames={'EndStates'})

    Tipos de datos: table

    Argumentos de par nombre-valor

    expandir todo

    Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de los otros argumentos, pero el orden de los pares no importa.

    Ejemplo: LinkWeightFcn=@nav.algs.distanceManhattan

    Nombres de estado, especificados como un vector columna de caracteres, un vector columna de cadenas o un arreglo de celdas de caracteres. El número de filas debe ser igual al número de estados y el valor de cada fila debe ser único.

    Ejemplo: Name=["A"; "B"; "C"]

    Ejemplo: Name={'A'; 'B'; 'C'}

    Tipos de datos: string | cell

    Pesos de enlace, especificados como un vector columna numérico. El número de filas debe ser igual al número de enlaces. Si especifica pesos de enlace, la función calcula los costos de transición con esos pesos e ignora los valores especificados por el argumento LinkWeightsFcn.

    Ejemplo: Weight=[2.22; 24.41; 42.76]

    Tipos de datos: single | double

    Función de pesos de enlace, especificada como un identificador de función que calcula los pesos de enlace en ausencia del argumento Weight. El argumento LinkWeightFcn establece el valor de la propiedad LinkWeightFcn.

    El identificador de función debe ser uno de estos tipos:

    1. COST = @(STATE1,STATE2)fcn, donde STATE1 y STATE2 son vectores de estado.

    2. COST = @(STATEID1,STATEID2,GRAPHOBJ)fcn, donde STATEID1 y STATEID2 son índices de estado.

    STATE1 y STATEID1 pueden tener una sola fila o N filas, mientras que STATE2 y STATEID2 deben tener N filas.

    Nota

    Para obtener el mejor rendimiento, vectorice el identificador de función.

    Ejemplo: LinkWeightFcn=@nav.algs.distanceManhattan

    Tipos de datos: function_handle

    Propiedades

    expandir todo

    Esta propiedad o parámetro es de solo lectura.

    Tabla de estados de los nodos del gráfico, especificada como una tabla con filas que contienen variables que describen los nodos (estados) del gráfico. La primera columna debe ser StateVector, que representa los vectores de estado del entorno. Opcionalmente, puede incluir otras columnas de metadatos, como una columna Name que represente los nombres de los estados.

    Tipos de datos: table

    Esta propiedad o parámetro es de solo lectura.

    Tabla de enlaces de bordes del gráfico, especificada como una tabla con filas que contienen variables que describen los bordes (vínculos) del gráfico. La primera columna debe ser EndStates, que representa los estados de conexión. Opcionalmente, puede incluir otras columnas de metadatos, como una columna Weight que represente los costos de recorrer los enlaces.

    Tipos de datos: table

    Función de peso del enlace, especificada como un identificador de función que calcula el coste de atravesar el enlace.

    El identificador de función debe ser uno de estos tipos:

    1. COST = @(STATE1,STATE2)fcn, donde STATE1 y STATE2 son vectores de estado.

    2. COST = @(STATEID1,STATEID2,GRAPHOBJ)fcn, donde STATEID1 y STATEID2 son índices de estado.

    STATE1 y STATEID1 pueden tener una sola fila o N filas, mientras que STATE2 y STATEID2 deben tener N filas.

    Nota

    Para obtener el mejor rendimiento, vectorice el identificador de función.

    Ejemplo: graph.LinkWeightFcn=@nav.algs.distanceManhattan

    Tipos de datos: function_handle

    Funciones del objeto

    addstateAgregar uno o más estados al gráfico
    addlinkAgregar enlaces entre uno o más pares de estados
    rmstateEliminar uno o más estados del gráfico
    rmlinkEliminar vínculos entre uno o más pares de estados
    findlinkBuscar ID de enlaces
    findstateEncuentra identificaciones de estados
    index2stateEncontrar vectores de estado de índices estatales
    state2indexBuscar índices para vectores de estado consultados
    successorsEncuentre índices y costes estatales sucesivos.
    showTrazar representación gráfica
    copyCrear una copia profunda del objeto navGraph

    Ejemplos

    contraer todo

    Cargar datos para estados y enlaces.

    load navGraphData.mat

    Crear tablas de estados y enlaces.

    stateTable = table(data.states,data.names,data.numLanes, ...
        VariableNames=["StateVector","Name","Lanes"]);
    linkTable = table(data.links,data.linkWt,data.curvature, ...
        VariableNames=["EndStates","Weight","Curvature"]);

    Crea un objeto navGraph a partir de las tablas de estado y vínculo.

    graphObj = navGraph(stateTable,linkTable);

    Crea una copia profunda del objeto navGraph.

    graph2 = copy(graphObj)
    graph2 = 
      navGraph with properties:
    
               States: [8×3 table]
                Links: [7×3 table]
        LinkWeightFcn: @nav.algs.distanceEuclidean
    
    

    Visualice el objeto navGraph.

    show(graphObj)

    Figure contains an axes object. The axes object contains an object of type graphplot.

    Encuentre los ID de enlace de dos pares de estados. La función devuelve el ID del enlace para el par de estados ["G","A"]. Sin embargo, devuelve 0 como ID de enlace para el par de estados ["C","D"] ya que el enlace no existe en el objeto navGraph.

    linkIDS = findlink(navGraphObj,["G","A"; "C","D"])
    linkIDS = 2×1
    
         5
         0
    
    

    Capacidades ampliadas

    expandir todo

    Historial de versiones

    Introducido en R2023a

    expandir todo