Skip to content

Module pyastrobee.config.iss_paths

Alternative method for searching the graph of safe sets in the ISS

The safe-set of boxes in the ISS is pretty small, so it's not too hard to just enumerate all of the paths between different boxes and use a lookup table.

PATHS[start][end] will yield a list of safe boxes from start to end

As compared with depth-first-search, the lookup table is about 10x faster using timeit

To recompute the lookup table, re-run the script, copy the output here, and autoformat the file with Black

View Source
"""Alternative method for searching the graph of safe sets in the ISS

The safe-set of boxes in the ISS is pretty small, so it's not too hard to just enumerate all of the paths between

different boxes and use a lookup table.

PATHS[start][end] will yield a list of safe boxes from start to end

As compared with depth-first-search, the lookup table is about 10x faster using timeit

To recompute the lookup table, re-run the script, copy the output here, and autoformat the file with Black

"""

from pprint import pprint

from collections import defaultdict

from pyastrobee.config.iss_safe_boxes import compute_iss_graph

from pyastrobee.utils.algos import dfs

# Slightly hacky but it works

def _dp_dfs(graph: dict[str, list[str]]) -> dict[str, dict[str, list[str]]]:

    dp = defaultdict(dict)

    for start in graph:

        for end in graph:

            if start in dp and end in dp[start]:

                continue

            else:

                path = dfs(graph, start, end)

                for i in range(len(path)):

                    for j in range(i, len(path)):

                        dp[path[i]][path[j]] = path[i : j + 1]

    return dp

def print_path_lookup_table():

    graph = compute_iss_graph()

    all_paths = _dp_dfs(graph)

    pprint(dict(all_paths), indent=0, compact=True, width=200)

def print_graph():

    graph = compute_iss_graph()

    pprint(graph, indent=0, compact=True, width=200)

GRAPH = {

    "cupola": ["n3_cupola_corridor"],

    "eu_lab": ["n2_eu_corridor"],

    "jpm": ["jpm_n2_corridor"],

    "jpm_n2_corridor": ["jpm", "node_2"],

    "n1_n3_corridor": ["node_1", "node_3_a"],

    "n2_eu_corridor": ["node_2", "eu_lab"],

    "n2_us_corridor": ["node_2", "us_lab"],

    "n3_cupola_corridor": ["node_3_b", "cupola"],

    "node_1": ["us_n1_corridor", "n1_n3_corridor"],

    "node_2": ["jpm_n2_corridor", "n2_eu_corridor", "n2_us_corridor"],

    "node_3_a": ["node_3_b", "n1_n3_corridor"],

    "node_3_b": ["node_3_a", "n3_cupola_corridor"],

    "us_lab": ["n2_us_corridor", "us_n1_corridor"],

    "us_n1_corridor": ["us_lab", "node_1"],

}

PATHS = {

    "cupola": {

        "cupola": ["cupola"],

        "eu_lab": [

            "cupola",

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

            "eu_lab",

        ],

        "jpm": [

            "cupola",

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

            "jpm",

        ],

        "jpm_n2_corridor": [

            "cupola",

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

        ],

        "n1_n3_corridor": [

            "cupola",

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

        ],

        "n2_eu_corridor": [

            "cupola",

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

        ],

        "n2_us_corridor": [

            "cupola",

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

        ],

        "n3_cupola_corridor": ["cupola", "n3_cupola_corridor"],

        "node_1": [

            "cupola",

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

        ],

        "node_2": [

            "cupola",

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

        ],

        "node_3_a": ["cupola", "n3_cupola_corridor", "node_3_b", "node_3_a"],

        "node_3_b": ["cupola", "n3_cupola_corridor", "node_3_b"],

        "us_lab": [

            "cupola",

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

        ],

        "us_n1_corridor": [

            "cupola",

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

        ],

    },

    "eu_lab": {

        "cupola": [

            "eu_lab",

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

            "cupola",

        ],

        "eu_lab": ["eu_lab"],

        "jpm": ["eu_lab", "n2_eu_corridor", "node_2", "jpm_n2_corridor", "jpm"],

        "jpm_n2_corridor": ["eu_lab", "n2_eu_corridor", "node_2", "jpm_n2_corridor"],

        "n1_n3_corridor": [

            "eu_lab",

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

        ],

        "n2_eu_corridor": ["eu_lab", "n2_eu_corridor"],

        "n2_us_corridor": ["eu_lab", "n2_eu_corridor", "node_2", "n2_us_corridor"],

        "n3_cupola_corridor": [

            "eu_lab",

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

        ],

        "node_1": [

            "eu_lab",

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

        ],

        "node_2": ["eu_lab", "n2_eu_corridor", "node_2"],

        "node_3_a": [

            "eu_lab",

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

        ],

        "node_3_b": [

            "eu_lab",

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

        ],

        "us_lab": ["eu_lab", "n2_eu_corridor", "node_2", "n2_us_corridor", "us_lab"],

        "us_n1_corridor": [

            "eu_lab",

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

        ],

    },

    "jpm": {

        "cupola": [

            "jpm",

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

            "cupola",

        ],

        "eu_lab": ["jpm", "jpm_n2_corridor", "node_2", "n2_eu_corridor", "eu_lab"],

        "jpm": ["jpm"],

        "jpm_n2_corridor": ["jpm", "jpm_n2_corridor"],

        "n1_n3_corridor": [

            "jpm",

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

        ],

        "n2_eu_corridor": ["jpm", "jpm_n2_corridor", "node_2", "n2_eu_corridor"],

        "n2_us_corridor": ["jpm", "jpm_n2_corridor", "node_2", "n2_us_corridor"],

        "n3_cupola_corridor": [

            "jpm",

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

        ],

        "node_1": [

            "jpm",

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

        ],

        "node_2": ["jpm", "jpm_n2_corridor", "node_2"],

        "node_3_a": [

            "jpm",

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

        ],

        "node_3_b": [

            "jpm",

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

        ],

        "us_lab": ["jpm", "jpm_n2_corridor", "node_2", "n2_us_corridor", "us_lab"],

        "us_n1_corridor": [

            "jpm",

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

        ],

    },

    "jpm_n2_corridor": {

        "cupola": [

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

            "cupola",

        ],

        "eu_lab": ["jpm_n2_corridor", "node_2", "n2_eu_corridor", "eu_lab"],

        "jpm": ["jpm_n2_corridor", "jpm"],

        "jpm_n2_corridor": ["jpm_n2_corridor"],

        "n1_n3_corridor": [

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

        ],

        "n2_eu_corridor": ["jpm_n2_corridor", "node_2", "n2_eu_corridor"],

        "n2_us_corridor": ["jpm_n2_corridor", "node_2", "n2_us_corridor"],

        "n3_cupola_corridor": [

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

        ],

        "node_1": [

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

        ],

        "node_2": ["jpm_n2_corridor", "node_2"],

        "node_3_a": [

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

        ],

        "node_3_b": [

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

        ],

        "us_lab": ["jpm_n2_corridor", "node_2", "n2_us_corridor", "us_lab"],

        "us_n1_corridor": [

            "jpm_n2_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

        ],

    },

    "n1_n3_corridor": {

        "cupola": [

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

            "cupola",

        ],

        "eu_lab": [

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

            "eu_lab",

        ],

        "jpm": [

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

            "jpm",

        ],

        "jpm_n2_corridor": [

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

        ],

        "n1_n3_corridor": ["n1_n3_corridor"],

        "n2_eu_corridor": [

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

        ],

        "n2_us_corridor": [

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

        ],

        "n3_cupola_corridor": [

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

        ],

        "node_1": ["n1_n3_corridor", "node_1"],

        "node_2": [

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

        ],

        "node_3_a": ["n1_n3_corridor", "node_3_a"],

        "node_3_b": ["n1_n3_corridor", "node_3_a", "node_3_b"],

        "us_lab": ["n1_n3_corridor", "node_1", "us_n1_corridor", "us_lab"],

        "us_n1_corridor": ["n1_n3_corridor", "node_1", "us_n1_corridor"],

    },

    "n2_eu_corridor": {

        "cupola": [

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

            "cupola",

        ],

        "eu_lab": ["n2_eu_corridor", "eu_lab"],

        "jpm": ["n2_eu_corridor", "node_2", "jpm_n2_corridor", "jpm"],

        "jpm_n2_corridor": ["n2_eu_corridor", "node_2", "jpm_n2_corridor"],

        "n1_n3_corridor": [

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

        ],

        "n2_eu_corridor": ["n2_eu_corridor"],

        "n2_us_corridor": ["n2_eu_corridor", "node_2", "n2_us_corridor"],

        "n3_cupola_corridor": [

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

        ],

        "node_1": [

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

        ],

        "node_2": ["n2_eu_corridor", "node_2"],

        "node_3_a": [

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

        ],

        "node_3_b": [

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

        ],

        "us_lab": ["n2_eu_corridor", "node_2", "n2_us_corridor", "us_lab"],

        "us_n1_corridor": [

            "n2_eu_corridor",

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

        ],

    },

    "n2_us_corridor": {

        "cupola": [

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

            "cupola",

        ],

        "eu_lab": ["n2_us_corridor", "node_2", "n2_eu_corridor", "eu_lab"],

        "jpm": ["n2_us_corridor", "node_2", "jpm_n2_corridor", "jpm"],

        "jpm_n2_corridor": ["n2_us_corridor", "node_2", "jpm_n2_corridor"],

        "n1_n3_corridor": [

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

        ],

        "n2_eu_corridor": ["n2_us_corridor", "node_2", "n2_eu_corridor"],

        "n2_us_corridor": ["n2_us_corridor"],

        "n3_cupola_corridor": [

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

        ],

        "node_1": ["n2_us_corridor", "us_lab", "us_n1_corridor", "node_1"],

        "node_2": ["n2_us_corridor", "node_2"],

        "node_3_a": [

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

        ],

        "node_3_b": [

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

        ],

        "us_lab": ["n2_us_corridor", "us_lab"],

        "us_n1_corridor": ["n2_us_corridor", "us_lab", "us_n1_corridor"],

    },

    "n3_cupola_corridor": {

        "cupola": ["n3_cupola_corridor", "cupola"],

        "eu_lab": [

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

            "eu_lab",

        ],

        "jpm": [

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

            "jpm",

        ],

        "jpm_n2_corridor": [

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

        ],

        "n1_n3_corridor": [

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

        ],

        "n2_eu_corridor": [

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

        ],

        "n2_us_corridor": [

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

        ],

        "n3_cupola_corridor": ["n3_cupola_corridor"],

        "node_1": [

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

        ],

        "node_2": [

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

        ],

        "node_3_a": ["n3_cupola_corridor", "node_3_b", "node_3_a"],

        "node_3_b": ["n3_cupola_corridor", "node_3_b"],

        "us_lab": [

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

        ],

        "us_n1_corridor": [

            "n3_cupola_corridor",

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

        ],

    },

    "node_1": {

        "cupola": [

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

            "cupola",

        ],

        "eu_lab": [

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

            "eu_lab",

        ],

        "jpm": [

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

            "jpm",

        ],

        "jpm_n2_corridor": [

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

        ],

        "n1_n3_corridor": ["node_1", "n1_n3_corridor"],

        "n2_eu_corridor": [

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

        ],

        "n2_us_corridor": ["node_1", "us_n1_corridor", "us_lab", "n2_us_corridor"],

        "n3_cupola_corridor": [

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

        ],

        "node_1": ["node_1"],

        "node_2": ["node_1", "us_n1_corridor", "us_lab", "n2_us_corridor", "node_2"],

        "node_3_a": ["node_1", "n1_n3_corridor", "node_3_a"],

        "node_3_b": ["node_1", "n1_n3_corridor", "node_3_a", "node_3_b"],

        "us_lab": ["node_1", "us_n1_corridor", "us_lab"],

        "us_n1_corridor": ["node_1", "us_n1_corridor"],

    },

    "node_2": {

        "cupola": [

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

            "cupola",

        ],

        "eu_lab": ["node_2", "n2_eu_corridor", "eu_lab"],

        "jpm": ["node_2", "jpm_n2_corridor", "jpm"],

        "jpm_n2_corridor": ["node_2", "jpm_n2_corridor"],

        "n1_n3_corridor": [

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

        ],

        "n2_eu_corridor": ["node_2", "n2_eu_corridor"],

        "n2_us_corridor": ["node_2", "n2_us_corridor"],

        "n3_cupola_corridor": [

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

        ],

        "node_1": ["node_2", "n2_us_corridor", "us_lab", "us_n1_corridor", "node_1"],

        "node_2": ["node_2"],

        "node_3_a": [

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

        ],

        "node_3_b": [

            "node_2",

            "n2_us_corridor",

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

        ],

        "us_lab": ["node_2", "n2_us_corridor", "us_lab"],

        "us_n1_corridor": ["node_2", "n2_us_corridor", "us_lab", "us_n1_corridor"],

    },

    "node_3_a": {

        "cupola": ["node_3_a", "node_3_b", "n3_cupola_corridor", "cupola"],

        "eu_lab": [

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

            "eu_lab",

        ],

        "jpm": [

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

            "jpm",

        ],

        "jpm_n2_corridor": [

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

        ],

        "n1_n3_corridor": ["node_3_a", "n1_n3_corridor"],

        "n2_eu_corridor": [

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

        ],

        "n2_us_corridor": [

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

        ],

        "n3_cupola_corridor": ["node_3_a", "node_3_b", "n3_cupola_corridor"],

        "node_1": ["node_3_a", "n1_n3_corridor", "node_1"],

        "node_2": [

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

        ],

        "node_3_a": ["node_3_a"],

        "node_3_b": ["node_3_a", "node_3_b"],

        "us_lab": ["node_3_a", "n1_n3_corridor", "node_1", "us_n1_corridor", "us_lab"],

        "us_n1_corridor": ["node_3_a", "n1_n3_corridor", "node_1", "us_n1_corridor"],

    },

    "node_3_b": {

        "cupola": ["node_3_b", "n3_cupola_corridor", "cupola"],

        "eu_lab": [

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

            "eu_lab",

        ],

        "jpm": [

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

            "jpm",

        ],

        "jpm_n2_corridor": [

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

        ],

        "n1_n3_corridor": ["node_3_b", "node_3_a", "n1_n3_corridor"],

        "n2_eu_corridor": [

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

        ],

        "n2_us_corridor": [

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

        ],

        "n3_cupola_corridor": ["node_3_b", "n3_cupola_corridor"],

        "node_1": ["node_3_b", "node_3_a", "n1_n3_corridor", "node_1"],

        "node_2": [

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

        ],

        "node_3_a": ["node_3_b", "node_3_a"],

        "node_3_b": ["node_3_b"],

        "us_lab": [

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

            "us_lab",

        ],

        "us_n1_corridor": [

            "node_3_b",

            "node_3_a",

            "n1_n3_corridor",

            "node_1",

            "us_n1_corridor",

        ],

    },

    "us_lab": {

        "cupola": [

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

            "cupola",

        ],

        "eu_lab": ["us_lab", "n2_us_corridor", "node_2", "n2_eu_corridor", "eu_lab"],

        "jpm": ["us_lab", "n2_us_corridor", "node_2", "jpm_n2_corridor", "jpm"],

        "jpm_n2_corridor": ["us_lab", "n2_us_corridor", "node_2", "jpm_n2_corridor"],

        "n1_n3_corridor": ["us_lab", "us_n1_corridor", "node_1", "n1_n3_corridor"],

        "n2_eu_corridor": ["us_lab", "n2_us_corridor", "node_2", "n2_eu_corridor"],

        "n2_us_corridor": ["us_lab", "n2_us_corridor"],

        "n3_cupola_corridor": [

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

        ],

        "node_1": ["us_lab", "us_n1_corridor", "node_1"],

        "node_2": ["us_lab", "n2_us_corridor", "node_2"],

        "node_3_a": [

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

        ],

        "node_3_b": [

            "us_lab",

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

        ],

        "us_lab": ["us_lab"],

        "us_n1_corridor": ["us_lab", "us_n1_corridor"],

    },

    "us_n1_corridor": {

        "cupola": [

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

            "cupola",

        ],

        "eu_lab": [

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

            "eu_lab",

        ],

        "jpm": [

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

            "jpm",

        ],

        "jpm_n2_corridor": [

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "jpm_n2_corridor",

        ],

        "n1_n3_corridor": ["us_n1_corridor", "node_1", "n1_n3_corridor"],

        "n2_eu_corridor": [

            "us_n1_corridor",

            "us_lab",

            "n2_us_corridor",

            "node_2",

            "n2_eu_corridor",

        ],

        "n2_us_corridor": ["us_n1_corridor", "us_lab", "n2_us_corridor"],

        "n3_cupola_corridor": [

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

            "n3_cupola_corridor",

        ],

        "node_1": ["us_n1_corridor", "node_1"],

        "node_2": ["us_n1_corridor", "us_lab", "n2_us_corridor", "node_2"],

        "node_3_a": ["us_n1_corridor", "node_1", "n1_n3_corridor", "node_3_a"],

        "node_3_b": [

            "us_n1_corridor",

            "node_1",

            "n1_n3_corridor",

            "node_3_a",

            "node_3_b",

        ],

        "us_lab": ["us_n1_corridor", "us_lab"],

        "us_n1_corridor": ["us_n1_corridor"],

    },

}

if __name__ == "__main__":

    print_path_lookup_table()

    print("\n--------------------------\n")

    print_graph()

Variables

GRAPH
PATHS

Functions

def print_graph(

)
View Source
def print_graph():

    graph = compute_iss_graph()

    pprint(graph, indent=0, compact=True, width=200)
def print_path_lookup_table(

)
View Source
def print_path_lookup_table():

    graph = compute_iss_graph()

    all_paths = _dp_dfs(graph)

    pprint(dict(all_paths), indent=0, compact=True, width=200)