> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinetica.com/llms.txt
> Use this file to discover all available pages before exploring further.

# gpudb::SolveGraphRequest

> gpudb::SolveGraphRequest — Kinetica C++ API

<div className="kinetica-doxygen">
  <div className="contents">
    <p>A set of parameters for <a className="el" href="/content/api/cpp/classgpudb_1_1GPUdb#a53c721cb54a46730bbc465ee3a4a6dc3">GPUdb::solveGraph</a>. <a href="#details">More...</a></p>
    <p><code>#include \<<a className="el" href="/content/api/cpp/solve__graph_8h_source">gpudb/protocol/solve\_graph.h</a>></code></p>

    <table className="memberdecls">
      <tr className="heading">
        <td colSpan="2">
          <h2 className="groupheader"> Public Member Functions</h2>
        </td>
      </tr>

      <tr className="memitem:af447ca9b00d29575f7f681d9cfa65843" id="r_af447ca9b00d29575f7f681d9cfa65843">
        <td className="memItemLeft" align="right" valign="top"> </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#af447ca9b00d29575f7f681d9cfa65843">SolveGraphRequest</a> ()</td>
      </tr>

      <tr className="memdesc:af447ca9b00d29575f7f681d9cfa65843">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">Constructs a <a className="el" href="/content/api/cpp/structgpudb_1_1SolveGraphRequest" title="A set of parameters for GPUdb::solveGraph.">SolveGraphRequest</a> object with default parameters. <br /></td>
      </tr>

      <tr className="separator:af447ca9b00d29575f7f681d9cfa65843">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>

      <tr className="memitem:a030faabf2ca1112dfdfeb7f007f42ace" id="r_a030faabf2ca1112dfdfeb7f007f42ace">
        <td className="memItemLeft" align="right" valign="top"> </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#a030faabf2ca1112dfdfeb7f007f42ace">SolveGraphRequest</a> (const std::string \&graphName\_, const std::vector\< std::string > \&weightsOnEdges\_, const std::vector\< std::string > \&restrictions\_, const std::string \&solverType\_, const std::vector\< std::string > \&sourceNodes\_, const std::vector\< std::string > \&destinationNodes\_, const std::string \&solutionTable\_, const std::map\< std::string, std::string > \&options\_)</td>
      </tr>

      <tr className="memdesc:a030faabf2ca1112dfdfeb7f007f42ace">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">Constructs a <a className="el" href="/content/api/cpp/structgpudb_1_1SolveGraphRequest" title="A set of parameters for GPUdb::solveGraph.">SolveGraphRequest</a> object with the specified parameters. <br /></td>
      </tr>

      <tr className="separator:a030faabf2ca1112dfdfeb7f007f42ace">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>
    </table>

    <table className="memberdecls">
      <tr className="heading">
        <td colSpan="2">
          <h2 className="groupheader"> Public Attributes</h2>
        </td>
      </tr>

      <tr className="memitem:a6ddc40c5d8241cdab240b198058bd954" id="r_a6ddc40c5d8241cdab240b198058bd954">
        <td className="memItemLeft" align="right" valign="top">std::string </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#a6ddc40c5d8241cdab240b198058bd954">graphName</a></td>
      </tr>

      <tr className="memdesc:a6ddc40c5d8241cdab240b198058bd954">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">Name of the graph resource to solve. <br /></td>
      </tr>

      <tr className="separator:a6ddc40c5d8241cdab240b198058bd954">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>

      <tr className="memitem:a8290685ecc5f8fc6648da75bc004b930" id="r_a8290685ecc5f8fc6648da75bc004b930">
        <td className="memItemLeft" align="right" valign="top">std::vector\< std::string > </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#a8290685ecc5f8fc6648da75bc004b930">weightsOnEdges</a></td>
      </tr>

      <tr className="memdesc:a8290685ecc5f8fc6648da75bc004b930">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">Additional weights to apply to the edges of an existing graph. <br /></td>
      </tr>

      <tr className="separator:a8290685ecc5f8fc6648da75bc004b930">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>

      <tr className="memitem:a27edb8af90c3f6357d48f5ffb2aa9637" id="r_a27edb8af90c3f6357d48f5ffb2aa9637">
        <td className="memItemLeft" align="right" valign="top">std::vector\< std::string > </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#a27edb8af90c3f6357d48f5ffb2aa9637">restrictions</a></td>
      </tr>

      <tr className="memdesc:a27edb8af90c3f6357d48f5ffb2aa9637">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">Additional restrictions to apply to the nodes/edges of an existing graph. <br /></td>
      </tr>

      <tr className="separator:a27edb8af90c3f6357d48f5ffb2aa9637">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>

      <tr className="memitem:a68481c127833f10e35544feafebb1a3b" id="r_a68481c127833f10e35544feafebb1a3b">
        <td className="memItemLeft" align="right" valign="top">std::string </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#a68481c127833f10e35544feafebb1a3b">solverType</a></td>
      </tr>

      <tr className="memdesc:a68481c127833f10e35544feafebb1a3b">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">The type of solver to use for the graph. <br /></td>
      </tr>

      <tr className="separator:a68481c127833f10e35544feafebb1a3b">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>

      <tr className="memitem:adff99592f7dcf9fded9d3adc8effedd8" id="r_adff99592f7dcf9fded9d3adc8effedd8">
        <td className="memItemLeft" align="right" valign="top">std::vector\< std::string > </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#adff99592f7dcf9fded9d3adc8effedd8">sourceNodes</a></td>
      </tr>

      <tr className="memdesc:adff99592f7dcf9fded9d3adc8effedd8">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">It can be one of the nodal identifiers - e.g: 'NODE\_WKTPOINT' for source nodes. <br /></td>
      </tr>

      <tr className="separator:adff99592f7dcf9fded9d3adc8effedd8">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>

      <tr className="memitem:ace73a2a778c397d2261615f63276508d" id="r_ace73a2a778c397d2261615f63276508d">
        <td className="memItemLeft" align="right" valign="top">std::vector\< std::string > </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#ace73a2a778c397d2261615f63276508d">destinationNodes</a></td>
      </tr>

      <tr className="memdesc:ace73a2a778c397d2261615f63276508d">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">It can be one of the nodal identifiers - e.g: 'NODE\_WKTPOINT' for destination (target) nodes. <br /></td>
      </tr>

      <tr className="separator:ace73a2a778c397d2261615f63276508d">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>

      <tr className="memitem:af80e7a304539de595c34bf5f84fa87a1" id="r_af80e7a304539de595c34bf5f84fa87a1">
        <td className="memItemLeft" align="right" valign="top">std::string </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#af80e7a304539de595c34bf5f84fa87a1">solutionTable</a></td>
      </tr>

      <tr className="memdesc:af80e7a304539de595c34bf5f84fa87a1">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">Name of the table to store the solution, in \[ schema\_name. <br /></td>
      </tr>

      <tr className="separator:af80e7a304539de595c34bf5f84fa87a1">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>

      <tr className="memitem:ad6e408e0edfa4305ca94071029bddc97" id="r_ad6e408e0edfa4305ca94071029bddc97">
        <td className="memItemLeft" align="right" valign="top">std::map\< std::string, std::string > </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#ad6e408e0edfa4305ca94071029bddc97">options</a></td>
      </tr>

      <tr className="memdesc:ad6e408e0edfa4305ca94071029bddc97">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">Additional parameters. <br /></td>
      </tr>

      <tr className="separator:ad6e408e0edfa4305ca94071029bddc97">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>
    </table>

    <h2 className="groupheader">Detailed Description</h2>

    <div className="textblock">
      <p>A set of parameters for <a className="el" href="/content/api/cpp/classgpudb_1_1GPUdb#a53c721cb54a46730bbc465ee3a4a6dc3">GPUdb::solveGraph</a>. </p>
      <p>Solves an existing graph for a type of problem (e.g., shortest path, page rank, traveling salesman, etc.) using source nodes, destination nodes, and additional, optional weights and restrictions.</p>
      <p>IMPORTANT: It's highly recommended that you review the <a href="/content/graph_solver/network_graph_solver/" target="_top">Graphs and Solvers</a> concepts documentation, the <a href="/content/guides/graph_rest_guide/" target="_top">Graph REST Tutorial</a>, and/or some <a href="/content/guides/tags/graph-solve" target="_top">/solve/graph examples</a> before using this endpoint. </p>
      <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00026">26</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
    </div>

    <h2 className="groupheader">Constructor & Destructor Documentation</h2>
    <h2 className="memtitle"><span className="permalink"><a href="#af447ca9b00d29575f7f681d9cfa65843">◆ </a></span>SolveGraphRequest() <span className="overload">\[1/2]</span></h2>

    <div className="memitem">
      <div className="memproto">
        <table className="mlabels">
          <tr>
            <td className="mlabels-left">
              <table className="memname">
                <tr>
                  <td className="memname">gpudb::SolveGraphRequest::SolveGraphRequest </td>
                  <td>(</td>

                  <td className="paramname">
                    <span className="paramname">
                      <span className="em" />
                    </span>
                  </td>

                  <td>)</td>

                  <td />
                </tr>
              </table>
            </td>

            <td className="mlabels-right"> <span className="mlabels"><span className="mlabel inline">inline</span></span> </td>
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>Constructs a <a className="el" href="/content/api/cpp/structgpudb_1_1SolveGraphRequest" title="A set of parameters for GPUdb::solveGraph.">SolveGraphRequest</a> object with default parameters. </p>
        <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00031">31</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
      </div>
    </div>

    <h2 className="memtitle"><span className="permalink"><a href="#a030faabf2ca1112dfdfeb7f007f42ace">◆ </a></span>SolveGraphRequest() <span className="overload">\[2/2]</span></h2>

    <div className="memitem">
      <div className="memproto">
        <table className="mlabels">
          <tr>
            <td className="mlabels-left">
              <table className="memname">
                <tr>
                  <td className="memname">gpudb::SolveGraphRequest::SolveGraphRequest </td>
                  <td>(</td>
                  <td className="paramtype">const std::string &</td>
                  <td className="paramname"><span className="paramname"><span className="em">graphName\_</span></span>, </td>
                </tr>

                <tr>
                  <td className="paramkey" />

                  <td />

                  <td className="paramtype">const std::vector\< std::string > &</td>
                  <td className="paramname"><span className="paramname"><span className="em">weightsOnEdges\_</span></span>, </td>
                </tr>

                <tr>
                  <td className="paramkey" />

                  <td />

                  <td className="paramtype">const std::vector\< std::string > &</td>
                  <td className="paramname"><span className="paramname"><span className="em">restrictions\_</span></span>, </td>
                </tr>

                <tr>
                  <td className="paramkey" />

                  <td />

                  <td className="paramtype">const std::string &</td>
                  <td className="paramname"><span className="paramname"><span className="em">solverType\_</span></span>, </td>
                </tr>

                <tr>
                  <td className="paramkey" />

                  <td />

                  <td className="paramtype">const std::vector\< std::string > &</td>
                  <td className="paramname"><span className="paramname"><span className="em">sourceNodes\_</span></span>, </td>
                </tr>

                <tr>
                  <td className="paramkey" />

                  <td />

                  <td className="paramtype">const std::vector\< std::string > &</td>
                  <td className="paramname"><span className="paramname"><span className="em">destinationNodes\_</span></span>, </td>
                </tr>

                <tr>
                  <td className="paramkey" />

                  <td />

                  <td className="paramtype">const std::string &</td>
                  <td className="paramname"><span className="paramname"><span className="em">solutionTable\_</span></span>, </td>
                </tr>

                <tr>
                  <td className="paramkey" />

                  <td />

                  <td className="paramtype">const std::map\< std::string, std::string > &</td>
                  <td className="paramname"><span className="paramname"><span className="em">options\_</span></span> )</td>
                </tr>
              </table>
            </td>

            <td className="mlabels-right"> <span className="mlabels"><span className="mlabel inline">inline</span></span> </td>
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>Constructs a <a className="el" href="/content/api/cpp/structgpudb_1_1SolveGraphRequest" title="A set of parameters for GPUdb::solveGraph.">SolveGraphRequest</a> object with the specified parameters. </p>

        <div className="dl params">
          <div className="dt">Parameters</div>

          <div className="dd">
            <table className="params">
              <tr>
                <td className="paramdir">\[in]</td>
                <td className="paramname">graphName\_</td>
                <td>Name of the graph resource to solve. </td>
              </tr>

              <tr>
                <td className="paramdir">\[in]</td>
                <td className="paramname">weightsOnEdges\_</td>
                <td>Additional weights to apply to the edges of an existing graph. Weights must be specified using <a href="/content/graph_solver/network_graph_solver/#identifiers" target="_top">identifiers</a>; identifiers are grouped as <a href="/content/graph_solver/network_graph_solver/#id-combos" target="_top">combinations</a>. Identifiers can be used with existing column names, e.g., 'table.column AS WEIGHTS\_EDGE\_ID', expressions, e.g., 'ST\_LENGTH(wkt) AS WEIGHTS\_VALUESPECIFIED', or constant values, e.g., '{"{"}4, 15, 2{"}"} AS WEIGHTS\_VALUESPECIFIED'. Any provided weights will be added (in the case of 'WEIGHTS\_VALUESPECIFIED') to or multiplied with (in the case of 'WEIGHTS\_FACTORSPECIFIED') the existing weight(s). If using constant values in an identifier combination, the number of values specified must match across the combination. The default value is an empty vector. </td>
              </tr>

              <tr>
                <td className="paramdir">\[in]</td>
                <td className="paramname">restrictions\_</td>
                <td>Additional restrictions to apply to the nodes/edges of an existing graph. Restrictions must be specified using <a href="/content/graph_solver/network_graph_solver/#identifiers" target="_top">identifiers</a>; identifiers are grouped as <a href="/content/graph_solver/network_graph_solver/#id-combos" target="_top">combinations</a>. Identifiers can be used with existing column names, e.g., 'table.column AS RESTRICTIONS\_EDGE\_ID', expressions, e.g., 'column/2 AS RESTRICTIONS\_VALUECOMPARED', or constant values, e.g., '{"{"}0, 0, 0, 1{"}"} AS RESTRICTIONS\_ONOFFCOMPARED'. If using constant values in an identifier combination, the number of values specified must match across the combination. If remove\_previous\_restrictions option is set to true, any provided restrictions will replace the existing restrictions. Otherwise, any provided restrictions will be added (in the case of 'RESTRICTIONS\_VALUECOMPARED') to or replaced (in the case of 'RESTRICTIONS\_ONOFFCOMPARED'). The default value is an empty vector. </td>
              </tr>

              <tr>
                <td className="paramdir">\[in]</td>
                <td className="paramname">solverType\_</td>

                <td>
                  The type of solver to use for the graph. Supported values:

                  <ul>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#ae3b812a81f69a78fd8d5d647fafa5481">solve\_graph\_SHORTEST\_PATH</a>: Solves for the optimal (shortest) path based on weights and restrictions from one source to destinations nodes. Also known as the Dijkstra solver. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#ae0a7de078ffe4f01ad76d59abdf9b5d9">solve\_graph\_PAGE\_RANK</a>: Solves for the probability of each destination node being visited based on the links of the graph topology. Weights are not required to use this solver. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a359aa5b0d86984e7b726fc44e0a75135">solve\_graph\_PROBABILITY\_RANK</a>: Solves for the transitional probability (Hidden Markov) for each node based on the weights (probability assigned over given edges). </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a791e46f2427253d72f0f62ac02697638">solve\_graph\_CENTRALITY</a>: Solves for the degree of a node to depict how many pairs of individuals that would have to go through the node to reach one another in the minimum number of hops. Also known as betweenness. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a36ef6a3d26c650d2e7211ef384017d10">solve\_graph\_MULTIPLE\_ROUTING</a>: Solves for finding the minimum cost cumulative path for a round-trip starting from the given source and visiting each given destination node once then returning to the source. Also known as the traveling salesman problem. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a93c55f5359b1cf749b364e3bd3423915">solve\_graph\_INVERSE\_SHORTEST\_PATH</a>: Solves for finding the optimal path cost for each destination node to route to the source node. Also known as inverse Dijkstra or the service man routing problem. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a9b43cfca9481e85e6f58e011e7c3343f">solve\_graph\_BACKHAUL\_ROUTING</a>: Solves for optimal routes that connect remote asset nodes to the fixed (backbone) asset nodes. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a220953cb2e8752a1f55a57c008da6bc2">solve\_graph\_ALLPATHS</a>: Solves for paths that would give costs between max and min solution radia - Make sure to limit by the 'max\_solution\_targets' option. Min cost should be >= shortest\_path cost. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#ab9916de68907d55093048d821a40eb2d">solve\_graph\_STATS\_ALL</a>: Solves for graph statistics such as graph diameter, longest pairs, vertex valences, topology numbers, average and max cluster sizes, etc. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a582e582c96386dccad065c0fb91b3b70">solve\_graph\_CLOSENESS</a>: Solves for the centrality closeness score per node as the sum of the inverse shortest path costs to all nodes in the graph. </li>
                  </ul>

                  The default value is <a className="el" href="/content/api/cpp/namespacegpudb#ae3b812a81f69a78fd8d5d647fafa5481">solve\_graph\_SHORTEST\_PATH</a>.
                </td>
              </tr>

              <tr>
                <td className="paramdir">\[in]</td>
                <td className="paramname">sourceNodes\_</td>
                <td>It can be one of the nodal identifiers - e.g: 'NODE\_WKTPOINT' for source nodes. For <a className="el" href="/content/api/cpp/namespacegpudb#a9b43cfca9481e85e6f58e011e7c3343f">BACKHAUL\_ROUTING</a>, this list depicts the fixed assets. The default value is an empty vector. </td>
              </tr>

              <tr>
                <td className="paramdir">\[in]</td>
                <td className="paramname">destinationNodes\_</td>

                <td>
                  It can be one of the nodal identifiers

                  <ul>
                    <li>e.g: 'NODE\_WKTPOINT' for destination (target) nodes. For <a className="el" href="/content/api/cpp/namespacegpudb#a9b43cfca9481e85e6f58e011e7c3343f">BACKHAUL\_ROUTING</a>, this list depicts the remote assets. The default value is an empty vector. </li>
                  </ul>
                </td>
              </tr>

              <tr>
                <td className="paramdir">\[in]</td>
                <td className="paramname">solutionTable\_</td>
                <td>Name of the table to store the solution, in \[schema\_name.]table\_name format, using standard <a href="/content/concepts/tables/#table-name-resolution" target="_top">name resolution rules</a>. The default value is 'graph\_solutions'. </td>
              </tr>

              <tr>
                <td className="paramdir">\[in]</td>
                <td className="paramname">options\_</td>

                <td>
                  Additional parameters.

                  <ul>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a0cf14c3c628cda97655ba9f2b78adf99">solve\_graph\_max\_solution\_radius</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#a220953cb2e8752a1f55a57c008da6bc2">ALLPATHS</a>, <a className="el" href="/content/api/cpp/namespacegpudb#ae3b812a81f69a78fd8d5d647fafa5481">SHORTEST\_PATH</a> and <a className="el" href="/content/api/cpp/namespacegpudb#a93c55f5359b1cf749b364e3bd3423915">INVERSE\_SHORTEST\_PATH</a> solvers only. Sets the maximum solution cost radius, which ignores the <span className="em arg">destinationNodes\_</span> list and instead outputs the nodes within the radius sorted by ascending cost. If set to '0.0', the setting is ignored. The default value is '0.0'. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#ac372dd646e6ce7e7dd38e158d39b5817">solve\_graph\_min\_solution\_radius</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#a220953cb2e8752a1f55a57c008da6bc2">ALLPATHS</a>, <a className="el" href="/content/api/cpp/namespacegpudb#ae3b812a81f69a78fd8d5d647fafa5481">SHORTEST\_PATH</a> and <a className="el" href="/content/api/cpp/namespacegpudb#a93c55f5359b1cf749b364e3bd3423915">INVERSE\_SHORTEST\_PATH</a> solvers only. Applicable only when <a className="el" href="/content/api/cpp/namespacegpudb#a0cf14c3c628cda97655ba9f2b78adf99">max\_solution\_radius</a> is set. Sets the minimum solution cost radius, which ignores the <span className="em arg">destinationNodes\_</span> list and instead outputs the nodes within the radius sorted by ascending cost. If set to '0.0', the setting is ignored. The default value is '0.0'. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a5dbb4bfe25fcca830a1d2e5f72794480">solve\_graph\_max\_solution\_targets</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#a220953cb2e8752a1f55a57c008da6bc2">ALLPATHS</a>, <a className="el" href="/content/api/cpp/namespacegpudb#ae3b812a81f69a78fd8d5d647fafa5481">SHORTEST\_PATH</a> and <a className="el" href="/content/api/cpp/namespacegpudb#a93c55f5359b1cf749b364e3bd3423915">INVERSE\_SHORTEST\_PATH</a> solvers only. Sets the maximum number of solution targets, which ignores the <span className="em arg">destinationNodes\_</span> list and instead outputs no more than n number of nodes sorted by ascending cost where n is equal to the setting value. If set to 0, the setting is ignored. The default value is '1000'. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a3b3fdd4b833c2e2aea70704b13ee080c">solve\_graph\_uniform\_weights</a>: When specified, assigns the given value to all the edges in the graph. Note that weights provided in <span className="em arg">weightsOnEdges\_</span> will override this value. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a3d701158a1bd0fa7bf0db839cb61712c">solve\_graph\_left\_turn\_penalty</a>: This will add an additional weight over the edges labeled as 'left turn' if the 'add\_turn' option parameter of the <a className="el" href="/content/api/cpp/classgpudb_1_1GPUdb#a4055b3b0cd047d5c78f8ab61350e1c4e">GPUdb::createGraph</a> was invoked at graph creation. The default value is '0.0'. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a3c5821a9881f792878c7afdbbd6c0ee3">solve\_graph\_right\_turn\_penalty</a>: This will add an additional weight over the edges labeled as' right turn' if the 'add\_turn' option parameter of the <a className="el" href="/content/api/cpp/classgpudb_1_1GPUdb#a4055b3b0cd047d5c78f8ab61350e1c4e">GPUdb::createGraph</a> was invoked at graph creation. The default value is '0.0'. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a0cbfe715de05c26bfb4e7443ab741b47">solve\_graph\_intersection\_penalty</a>: This will add an additional weight over the edges labeled as 'intersection' if the 'add\_turn' option parameter of the <a className="el" href="/content/api/cpp/classgpudb_1_1GPUdb#a4055b3b0cd047d5c78f8ab61350e1c4e">GPUdb::createGraph</a> was invoked at graph creation. The default value is '0.0'. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a5d9de19fd9cab98fc0a756bb2d9e6260">solve\_graph\_sharp\_turn\_penalty</a>: This will add an additional weight over the edges labeled as 'sharp turn' or 'u-turn' if the 'add\_turn' option parameter of the <a className="el" href="/content/api/cpp/classgpudb_1_1GPUdb#a4055b3b0cd047d5c78f8ab61350e1c4e">GPUdb::createGraph</a> was invoked at graph creation. The default value is '0.0'. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a720bcae0490349ea669b90b47789b2dd">solve\_graph\_num\_best\_paths</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#a36ef6a3d26c650d2e7211ef384017d10">MULTIPLE\_ROUTING</a> solvers only; sets the number of shortest paths computed from each node. This is the heuristic criterion. Default value of zero allows the number to be computed automatically by the solver. The user may want to override this parameter to speed-up the solver. The default value is '0'. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a289a31f8f0de66143d110d5b9406be66">solve\_graph\_max\_num\_combinations</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#a36ef6a3d26c650d2e7211ef384017d10">MULTIPLE\_ROUTING</a> solvers only; sets the cap on the combinatorial sequences generated. If the default value of two millions is overridden to a lesser value, it can potentially speed up the solver. The default value is '2000000'. </li>

                    <li>
                      <a className="el" href="/content/api/cpp/namespacegpudb#a457ff25b8acaf7630a394ce701c9de98">solve\_graph\_output\_edge\_path</a>: If true then concatenated edge IDs will be added as the EDGE path column of the solution table for each source and target pair in shortest path solves. Supported values:

                      <ul>
                        <li> <a className="el" href="/content/api/cpp/namespacegpudb#a512e5f5dd20503901261659851cb5ed4">solve\_graph\_true</a> </li>
                        <li> <a className="el" href="/content/api/cpp/namespacegpudb#a2c3ecb206a7271e1e10ec85a9d55f805">solve\_graph\_false</a> </li>
                      </ul>

                      The default value is <a className="el" href="/content/api/cpp/namespacegpudb#a2c3ecb206a7271e1e10ec85a9d55f805">solve\_graph\_false</a>.
                    </li>

                    <li>
                      <a className="el" href="/content/api/cpp/namespacegpudb#ac8eafb3785ef9c47d29edfda7f45e42d">solve\_graph\_output\_wkt\_path</a>: If true then concatenated wkt line segments will be added as the Wktroute column of the solution table for each source and target pair in shortest path solves. Supported values:

                      <ul>
                        <li> <a className="el" href="/content/api/cpp/namespacegpudb#a512e5f5dd20503901261659851cb5ed4">solve\_graph\_true</a> </li>
                        <li> <a className="el" href="/content/api/cpp/namespacegpudb#a2c3ecb206a7271e1e10ec85a9d55f805">solve\_graph\_false</a> </li>
                      </ul>

                      The default value is <a className="el" href="/content/api/cpp/namespacegpudb#a512e5f5dd20503901261659851cb5ed4">solve\_graph\_true</a>.
                    </li>

                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a17ac9149a30dbb803f115d11e1ba8566">solve\_graph\_server\_id</a>: Indicates which graph server(s) to send the request to. Default is to send to the server, amongst those containing the corresponding graph, that has the most computational bandwidth. For SHORTEST\_PATH solver type, the input is split amongst the server containing the corresponding graph. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#aa6462eacb15ddbb34f38325e931debe5">solve\_graph\_convergence\_limit</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#ae0a7de078ffe4f01ad76d59abdf9b5d9">PAGE\_RANK</a> solvers only; Maximum percent relative threshold on the page rank scores of each node between consecutive iterations to satisfy convergence. Default value is 1 (one) percent. The default value is '1.0'. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a3632fd32a3a1d5884ccf81c79eace435">solve\_graph\_max\_iterations</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#ae0a7de078ffe4f01ad76d59abdf9b5d9">PAGE\_RANK</a> solvers only; Maximum number of page rank iterations for satisfying convergence. Default value is 100. The default value is '100'. </li>
                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a70323311b4ed78cd4c6e3e019fa7bf97">solve\_graph\_max\_runs</a>: For all <a className="el" href="/content/api/cpp/namespacegpudb#a791e46f2427253d72f0f62ac02697638">CENTRALITY</a> solvers only; Sets the maximum number of shortest path runs; maximum possible value is the number of nodes in the graph. Default value of 0 enables this value to be auto computed by the solver. The default value is '0'. </li>

                    <li>
                      <a className="el" href="/content/api/cpp/namespacegpudb#a108be0864ea1c98e5c12eaed54611b02">solve\_graph\_output\_clusters</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#ab9916de68907d55093048d821a40eb2d">STATS\_ALL</a> solvers only; the cluster index for each node will be inserted as an additional column in the output. Supported values:

                      <ul>
                        <li> <a className="el" href="/content/api/cpp/namespacegpudb#a512e5f5dd20503901261659851cb5ed4">solve\_graph\_true</a>: An additional column 'CLUSTER' will be added for each node. </li>
                        <li> <a className="el" href="/content/api/cpp/namespacegpudb#a2c3ecb206a7271e1e10ec85a9d55f805">solve\_graph\_false</a>: No extra cluster info per node will be available in the output. </li>
                      </ul>

                      The default value is <a className="el" href="/content/api/cpp/namespacegpudb#a2c3ecb206a7271e1e10ec85a9d55f805">solve\_graph\_false</a>.
                    </li>

                    <li>
                      <a className="el" href="/content/api/cpp/namespacegpudb#a861b87445c307864bd24cb4a162986c7">solve\_graph\_solve\_heuristic</a>: Specify heuristic search criterion only for the geo graphs and shortest path solves towards a single target. Supported values:

                      <ul>
                        <li> <a className="el" href="/content/api/cpp/namespacegpudb#ab1ed7902af439b227fa152cb619c3fa1">solve\_graph\_astar</a>: Employs A-STAR heuristics to speed up the shortest path traversal. </li>
                        <li> <a className="el" href="/content/api/cpp/namespacegpudb#a1c0eb21723ec35e97d6548579c7fb144">solve\_graph\_none</a>: No heuristics are applied. </li>
                      </ul>

                      The default value is <a className="el" href="/content/api/cpp/namespacegpudb#a1c0eb21723ec35e97d6548579c7fb144">solve\_graph\_none</a>.
                    </li>

                    <li> <a className="el" href="/content/api/cpp/namespacegpudb#a966d4b263d95dd979f810edc31c778b8">solve\_graph\_astar\_radius</a>: For path solvers only when 'solve\_heuristic' option is 'astar'. The shortest path traversal front includes nodes only within this radius (kilometers) as it moves towards the target location. The default value is '70'. </li>
                  </ul>

                  The default value is an empty map.
                </td>
              </tr>
            </table>
          </div>
        </div>

        <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00438">438</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
      </div>
    </div>

    <h2 className="groupheader">Member Data Documentation</h2>
    <h2 className="memtitle"><span className="permalink"><a href="#ace73a2a778c397d2261615f63276508d">◆ </a></span>destinationNodes</h2>

    <div className="memitem">
      <div className="memproto">
        <table className="memname">
          <tr>
            <td className="memname">std::vector\<std::string> gpudb::SolveGraphRequest::destinationNodes</td>
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>It can be one of the nodal identifiers - e.g: 'NODE\_WKTPOINT' for destination (target) nodes. </p>
        <p>For <a className="el" href="/content/api/cpp/namespacegpudb#a9b43cfca9481e85e6f58e011e7c3343f">BACKHAUL\_ROUTING</a>, this list depicts the remote assets. The default value is an empty vector. </p>
        <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00564">564</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
      </div>
    </div>

    <h2 className="memtitle"><span className="permalink"><a href="#a6ddc40c5d8241cdab240b198058bd954">◆ </a></span>graphName</h2>

    <div className="memitem">
      <div className="memproto">
        <table className="memname">
          <tr>
            <td className="memname">std::string gpudb::SolveGraphRequest::graphName</td>
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>Name of the graph resource to solve. </p>
        <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00453">453</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
      </div>
    </div>

    <h2 className="memtitle"><span className="permalink"><a href="#ad6e408e0edfa4305ca94071029bddc97">◆ </a></span>options</h2>

    <div className="memitem">
      <div className="memproto">
        <table className="memname">
          <tr>
            <td className="memname">std::map\<std::string, std::string> gpudb::SolveGraphRequest::options</td>
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>Additional parameters. </p>

        <ul>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a0cf14c3c628cda97655ba9f2b78adf99">solve\_graph\_max\_solution\_radius</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#a220953cb2e8752a1f55a57c008da6bc2">ALLPATHS</a>, <a className="el" href="/content/api/cpp/namespacegpudb#ae3b812a81f69a78fd8d5d647fafa5481">SHORTEST\_PATH</a> and <a className="el" href="/content/api/cpp/namespacegpudb#a93c55f5359b1cf749b364e3bd3423915">INVERSE\_SHORTEST\_PATH</a> solvers only. Sets the maximum solution cost radius, which ignores the <a className="el" href="#ace73a2a778c397d2261615f63276508d">destinationNodes</a> list and instead outputs the nodes within the radius sorted by ascending cost. If set to '0.0', the setting is ignored. The default value is '0.0'. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#ac372dd646e6ce7e7dd38e158d39b5817">solve\_graph\_min\_solution\_radius</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#a220953cb2e8752a1f55a57c008da6bc2">ALLPATHS</a>, <a className="el" href="/content/api/cpp/namespacegpudb#ae3b812a81f69a78fd8d5d647fafa5481">SHORTEST\_PATH</a> and <a className="el" href="/content/api/cpp/namespacegpudb#a93c55f5359b1cf749b364e3bd3423915">INVERSE\_SHORTEST\_PATH</a> solvers only. Applicable only when <a className="el" href="/content/api/cpp/namespacegpudb#a0cf14c3c628cda97655ba9f2b78adf99">max\_solution\_radius</a> is set. Sets the minimum solution cost radius, which ignores the <a className="el" href="#ace73a2a778c397d2261615f63276508d">destinationNodes</a> list and instead outputs the nodes within the radius sorted by ascending cost. If set to '0.0', the setting is ignored. The default value is '0.0'. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a5dbb4bfe25fcca830a1d2e5f72794480">solve\_graph\_max\_solution\_targets</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#a220953cb2e8752a1f55a57c008da6bc2">ALLPATHS</a>, <a className="el" href="/content/api/cpp/namespacegpudb#ae3b812a81f69a78fd8d5d647fafa5481">SHORTEST\_PATH</a> and <a className="el" href="/content/api/cpp/namespacegpudb#a93c55f5359b1cf749b364e3bd3423915">INVERSE\_SHORTEST\_PATH</a> solvers only. Sets the maximum number of solution targets, which ignores the <a className="el" href="#ace73a2a778c397d2261615f63276508d">destinationNodes</a> list and instead outputs no more than n number of nodes sorted by ascending cost where n is equal to the setting value. If set to 0, the setting is ignored. The default value is '1000'. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a3b3fdd4b833c2e2aea70704b13ee080c">solve\_graph\_uniform\_weights</a>: When specified, assigns the given value to all the edges in the graph. Note that weights provided in <a className="el" href="#a8290685ecc5f8fc6648da75bc004b930">weightsOnEdges</a> will override this value. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a3d701158a1bd0fa7bf0db839cb61712c">solve\_graph\_left\_turn\_penalty</a>: This will add an additional weight over the edges labeled as 'left turn' if the 'add\_turn' option parameter of the <a className="el" href="/content/api/cpp/classgpudb_1_1GPUdb#a4055b3b0cd047d5c78f8ab61350e1c4e">GPUdb::createGraph</a> was invoked at graph creation. The default value is '0.0'. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a3c5821a9881f792878c7afdbbd6c0ee3">solve\_graph\_right\_turn\_penalty</a>: This will add an additional weight over the edges labeled as' right turn' if the 'add\_turn' option parameter of the <a className="el" href="/content/api/cpp/classgpudb_1_1GPUdb#a4055b3b0cd047d5c78f8ab61350e1c4e">GPUdb::createGraph</a> was invoked at graph creation. The default value is '0.0'. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a0cbfe715de05c26bfb4e7443ab741b47">solve\_graph\_intersection\_penalty</a>: This will add an additional weight over the edges labeled as 'intersection' if the 'add\_turn' option parameter of the <a className="el" href="/content/api/cpp/classgpudb_1_1GPUdb#a4055b3b0cd047d5c78f8ab61350e1c4e">GPUdb::createGraph</a> was invoked at graph creation. The default value is '0.0'. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a5d9de19fd9cab98fc0a756bb2d9e6260">solve\_graph\_sharp\_turn\_penalty</a>: This will add an additional weight over the edges labeled as 'sharp turn' or 'u-turn' if the 'add\_turn' option parameter of the <a className="el" href="/content/api/cpp/classgpudb_1_1GPUdb#a4055b3b0cd047d5c78f8ab61350e1c4e">GPUdb::createGraph</a> was invoked at graph creation. The default value is '0.0'. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a720bcae0490349ea669b90b47789b2dd">solve\_graph\_num\_best\_paths</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#a36ef6a3d26c650d2e7211ef384017d10">MULTIPLE\_ROUTING</a> solvers only; sets the number of shortest paths computed from each node. This is the heuristic criterion. Default value of zero allows the number to be computed automatically by the solver. The user may want to override this parameter to speed-up the solver. The default value is '0'. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a289a31f8f0de66143d110d5b9406be66">solve\_graph\_max\_num\_combinations</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#a36ef6a3d26c650d2e7211ef384017d10">MULTIPLE\_ROUTING</a> solvers only; sets the cap on the combinatorial sequences generated. If the default value of two millions is overridden to a lesser value, it can potentially speed up the solver. The default value is '2000000'. </li>

          <li>
            <a className="el" href="/content/api/cpp/namespacegpudb#a457ff25b8acaf7630a394ce701c9de98">solve\_graph\_output\_edge\_path</a>: If true then concatenated edge IDs will be added as the EDGE path column of the solution table for each source and target pair in shortest path solves. Supported values:

            <ul>
              <li> <a className="el" href="/content/api/cpp/namespacegpudb#a512e5f5dd20503901261659851cb5ed4">solve\_graph\_true</a> </li>
              <li> <a className="el" href="/content/api/cpp/namespacegpudb#a2c3ecb206a7271e1e10ec85a9d55f805">solve\_graph\_false</a> </li>
            </ul>

            The default value is <a className="el" href="/content/api/cpp/namespacegpudb#a2c3ecb206a7271e1e10ec85a9d55f805">solve\_graph\_false</a>.
          </li>

          <li>
            <a className="el" href="/content/api/cpp/namespacegpudb#ac8eafb3785ef9c47d29edfda7f45e42d">solve\_graph\_output\_wkt\_path</a>: If true then concatenated wkt line segments will be added as the Wktroute column of the solution table for each source and target pair in shortest path solves. Supported values:

            <ul>
              <li> <a className="el" href="/content/api/cpp/namespacegpudb#a512e5f5dd20503901261659851cb5ed4">solve\_graph\_true</a> </li>
              <li> <a className="el" href="/content/api/cpp/namespacegpudb#a2c3ecb206a7271e1e10ec85a9d55f805">solve\_graph\_false</a> </li>
            </ul>

            The default value is <a className="el" href="/content/api/cpp/namespacegpudb#a512e5f5dd20503901261659851cb5ed4">solve\_graph\_true</a>.
          </li>

          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a17ac9149a30dbb803f115d11e1ba8566">solve\_graph\_server\_id</a>: Indicates which graph server(s) to send the request to. Default is to send to the server, amongst those containing the corresponding graph, that has the most computational bandwidth. For SHORTEST\_PATH solver type, the input is split amongst the server containing the corresponding graph. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#aa6462eacb15ddbb34f38325e931debe5">solve\_graph\_convergence\_limit</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#ae0a7de078ffe4f01ad76d59abdf9b5d9">PAGE\_RANK</a> solvers only; Maximum percent relative threshold on the page rank scores of each node between consecutive iterations to satisfy convergence. Default value is 1 (one) percent. The default value is '1.0'. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a3632fd32a3a1d5884ccf81c79eace435">solve\_graph\_max\_iterations</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#ae0a7de078ffe4f01ad76d59abdf9b5d9">PAGE\_RANK</a> solvers only; Maximum number of page rank iterations for satisfying convergence. Default value is 100. The default value is '100'. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a70323311b4ed78cd4c6e3e019fa7bf97">solve\_graph\_max\_runs</a>: For all <a className="el" href="/content/api/cpp/namespacegpudb#a791e46f2427253d72f0f62ac02697638">CENTRALITY</a> solvers only; Sets the maximum number of shortest path runs; maximum possible value is the number of nodes in the graph. Default value of 0 enables this value to be auto computed by the solver. The default value is '0'. </li>

          <li>
            <a className="el" href="/content/api/cpp/namespacegpudb#a108be0864ea1c98e5c12eaed54611b02">solve\_graph\_output\_clusters</a>: For <a className="el" href="/content/api/cpp/namespacegpudb#ab9916de68907d55093048d821a40eb2d">STATS\_ALL</a> solvers only; the cluster index for each node will be inserted as an additional column in the output. Supported values:

            <ul>
              <li> <a className="el" href="/content/api/cpp/namespacegpudb#a512e5f5dd20503901261659851cb5ed4">solve\_graph\_true</a>: An additional column 'CLUSTER' will be added for each node. </li>
              <li> <a className="el" href="/content/api/cpp/namespacegpudb#a2c3ecb206a7271e1e10ec85a9d55f805">solve\_graph\_false</a>: No extra cluster info per node will be available in the output. </li>
            </ul>

            The default value is <a className="el" href="/content/api/cpp/namespacegpudb#a2c3ecb206a7271e1e10ec85a9d55f805">solve\_graph\_false</a>.
          </li>

          <li>
            <a className="el" href="/content/api/cpp/namespacegpudb#a861b87445c307864bd24cb4a162986c7">solve\_graph\_solve\_heuristic</a>: Specify heuristic search criterion only for the geo graphs and shortest path solves towards a single target. Supported values:

            <ul>
              <li> <a className="el" href="/content/api/cpp/namespacegpudb#ab1ed7902af439b227fa152cb619c3fa1">solve\_graph\_astar</a>: Employs A-STAR heuristics to speed up the shortest path traversal. </li>
              <li> <a className="el" href="/content/api/cpp/namespacegpudb#a1c0eb21723ec35e97d6548579c7fb144">solve\_graph\_none</a>: No heuristics are applied. </li>
            </ul>

            The default value is <a className="el" href="/content/api/cpp/namespacegpudb#a1c0eb21723ec35e97d6548579c7fb144">solve\_graph\_none</a>.
          </li>

          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a966d4b263d95dd979f810edc31c778b8">solve\_graph\_astar\_radius</a>: For path solvers only when 'solve\_heuristic' option is 'astar'. The shortest path traversal front includes nodes only within this radius (kilometers) as it moves towards the target location. The default value is '70'. </li>
        </ul>

        <p>The default value is an empty map. </p>
        <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00746">746</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
      </div>
    </div>

    <h2 className="memtitle"><span className="permalink"><a href="#a27edb8af90c3f6357d48f5ffb2aa9637">◆ </a></span>restrictions</h2>

    <div className="memitem">
      <div className="memproto">
        <table className="memname">
          <tr>
            <td className="memname">std::vector\<std::string> gpudb::SolveGraphRequest::restrictions</td>
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>Additional restrictions to apply to the nodes/edges of an existing graph. </p>
        <p>Restrictions must be specified using <a href="/content/graph_solver/network_graph_solver/#identifiers" target="_top">identifiers</a>; identifiers are grouped as <a href="/content/graph_solver/network_graph_solver/#id-combos" target="_top">combinations</a>. Identifiers can be used with existing column names, e.g., 'table.column AS RESTRICTIONS\_EDGE\_ID', expressions, e.g., 'column/2 AS RESTRICTIONS\_VALUECOMPARED', or constant values, e.g., '{"{"}0, 0, 0, 1{"}"} AS RESTRICTIONS\_ONOFFCOMPARED'. If using constant values in an identifier combination, the number of values specified must match across the combination. If remove\_previous\_restrictions option is set to true, any provided restrictions will replace the existing restrictions. Otherwise, any provided restrictions will be added (in the case of 'RESTRICTIONS\_VALUECOMPARED') to or replaced (in the case of 'RESTRICTIONS\_ONOFFCOMPARED'). The default value is an empty vector. </p>
        <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00492">492</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
      </div>
    </div>

    <h2 className="memtitle"><span className="permalink"><a href="#af80e7a304539de595c34bf5f84fa87a1">◆ </a></span>solutionTable</h2>

    <div className="memitem">
      <div className="memproto">
        <table className="memname">
          <tr>
            <td className="memname">std::string gpudb::SolveGraphRequest::solutionTable</td>
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>Name of the table to store the solution, in \[ schema\_name. </p>
        <p>\ ]table\_name format, using standard <a href="/content/concepts/tables/#table-name-resolution" target="_top">name resolution rules</a>. The default value is 'graph\_solutions'. </p>
        <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00573">573</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
      </div>
    </div>

    <h2 className="memtitle"><span className="permalink"><a href="#a68481c127833f10e35544feafebb1a3b">◆ </a></span>solverType</h2>

    <div className="memitem">
      <div className="memproto">
        <table className="memname">
          <tr>
            <td className="memname">std::string gpudb::SolveGraphRequest::solverType</td>
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>The type of solver to use for the graph. </p>
        <p>Supported values: </p>

        <ul>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#ae3b812a81f69a78fd8d5d647fafa5481">solve\_graph\_SHORTEST\_PATH</a>: Solves for the optimal (shortest) path based on weights and restrictions from one source to destinations nodes. Also known as the Dijkstra solver. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#ae0a7de078ffe4f01ad76d59abdf9b5d9">solve\_graph\_PAGE\_RANK</a>: Solves for the probability of each destination node being visited based on the links of the graph topology. Weights are not required to use this solver. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a359aa5b0d86984e7b726fc44e0a75135">solve\_graph\_PROBABILITY\_RANK</a>: Solves for the transitional probability (Hidden Markov) for each node based on the weights (probability assigned over given edges). </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a791e46f2427253d72f0f62ac02697638">solve\_graph\_CENTRALITY</a>: Solves for the degree of a node to depict how many pairs of individuals that would have to go through the node to reach one another in the minimum number of hops. Also known as betweenness. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a36ef6a3d26c650d2e7211ef384017d10">solve\_graph\_MULTIPLE\_ROUTING</a>: Solves for finding the minimum cost cumulative path for a round-trip starting from the given source and visiting each given destination node once then returning to the source. Also known as the traveling salesman problem. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a93c55f5359b1cf749b364e3bd3423915">solve\_graph\_INVERSE\_SHORTEST\_PATH</a>: Solves for finding the optimal path cost for each destination node to route to the source node. Also known as inverse Dijkstra or the service man routing problem. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a9b43cfca9481e85e6f58e011e7c3343f">solve\_graph\_BACKHAUL\_ROUTING</a>: Solves for optimal routes that connect remote asset nodes to the fixed (backbone) asset nodes. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a220953cb2e8752a1f55a57c008da6bc2">solve\_graph\_ALLPATHS</a>: Solves for paths that would give costs between max and min solution radia - Make sure to limit by the 'max\_solution\_targets' option. Min cost should be >= shortest\_path cost. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#ab9916de68907d55093048d821a40eb2d">solve\_graph\_STATS\_ALL</a>: Solves for graph statistics such as graph diameter, longest pairs, vertex valences, topology numbers, average and max cluster sizes, etc. </li>
          <li> <a className="el" href="/content/api/cpp/namespacegpudb#a582e582c96386dccad065c0fb91b3b70">solve\_graph\_CLOSENESS</a>: Solves for the centrality closeness score per node as the sum of the inverse shortest path costs to all nodes in the graph. </li>
        </ul>

        <p>The default value is <a className="el" href="/content/api/cpp/namespacegpudb#ae3b812a81f69a78fd8d5d647fafa5481">solve\_graph\_SHORTEST\_PATH</a>. </p>
        <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00548">548</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
      </div>
    </div>

    <h2 className="memtitle"><span className="permalink"><a href="#adff99592f7dcf9fded9d3adc8effedd8">◆ </a></span>sourceNodes</h2>

    <div className="memitem">
      <div className="memproto">
        <table className="memname">
          <tr>
            <td className="memname">std::vector\<std::string> gpudb::SolveGraphRequest::sourceNodes</td>
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>It can be one of the nodal identifiers - e.g: 'NODE\_WKTPOINT' for source nodes. </p>
        <p>For <a className="el" href="/content/api/cpp/namespacegpudb#a9b43cfca9481e85e6f58e011e7c3343f">BACKHAUL\_ROUTING</a>, this list depicts the fixed assets. The default value is an empty vector. </p>
        <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00556">556</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
      </div>
    </div>

    <h2 className="memtitle"><span className="permalink"><a href="#a8290685ecc5f8fc6648da75bc004b930">◆ </a></span>weightsOnEdges</h2>

    <div className="memitem">
      <div className="memproto">
        <table className="memname">
          <tr>
            <td className="memname">std::vector\<std::string> gpudb::SolveGraphRequest::weightsOnEdges</td>
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>Additional weights to apply to the edges of an existing graph. </p>
        <p>Weights must be specified using <a href="/content/graph_solver/network_graph_solver/#identifiers" target="_top">identifiers</a>; identifiers are grouped as <a href="/content/graph_solver/network_graph_solver/#id-combos" target="_top">combinations</a>. Identifiers can be used with existing column names, e.g., 'table.column AS WEIGHTS\_EDGE\_ID', expressions, e.g., 'ST\_LENGTH(wkt) AS WEIGHTS\_VALUESPECIFIED', or constant values, e.g., '{"{"}4, 15, 2{"}"} AS WEIGHTS\_VALUESPECIFIED'. Any provided weights will be added (in the case of 'WEIGHTS\_VALUESPECIFIED') to or multiplied with (in the case of 'WEIGHTS\_FACTORSPECIFIED') the existing weight(s). If using constant values in an identifier combination, the number of values specified must match across the combination. The default value is an empty vector. </p>
        <p className="definition">Definition at line <a className="el" href="/content/api/cpp/solve__graph_8h_source#l00472">472</a> of file <a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a>.</p>
      </div>
    </div>

    <hr />

    The documentation for this struct was generated from the following file:

    <ul>
      <li>gpudb/protocol/<a className="el" href="/content/api/cpp/solve__graph_8h_source">solve\_graph.h</a></li>
    </ul>
  </div>
</div>
