diff --git a/analysis/spec/notebooks/Time_vs_FLOP.ipynb b/analysis/spec/notebooks/Time_vs_FLOP.ipynb
index e9e1a82b..f1b535c6 100644
--- a/analysis/spec/notebooks/Time_vs_FLOP.ipynb
+++ b/analysis/spec/notebooks/Time_vs_FLOP.ipynb
@@ -7,7 +7,7 @@
},
"source": [
"
Table of Contents
\n",
- ""
+ ""
]
},
{
@@ -27,8 +27,8 @@
"execution_count": 1,
"metadata": {
"ExecuteTime": {
- "end_time": "2020-10-09T12:09:49.685884Z",
- "start_time": "2020-10-09T12:09:44.521036Z"
+ "end_time": "2020-10-11T03:32:44.317870Z",
+ "start_time": "2020-10-11T03:32:41.940108Z"
}
},
"outputs": [],
@@ -37,6 +37,7 @@
"import sys\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
+ "import scipy\n",
"\n",
"import qtensor as qt\n",
"from cartesian_explorer import Explorer"
@@ -47,8 +48,8 @@
"execution_count": 2,
"metadata": {
"ExecuteTime": {
- "end_time": "2020-10-09T12:09:49.693502Z",
- "start_time": "2020-10-09T12:09:49.687338Z"
+ "end_time": "2020-10-11T03:32:44.323932Z",
+ "start_time": "2020-10-11T03:32:44.320677Z"
}
},
"outputs": [],
@@ -64,8 +65,8 @@
"execution_count": 3,
"metadata": {
"ExecuteTime": {
- "end_time": "2020-10-09T12:09:49.709455Z",
- "start_time": "2020-10-09T12:09:49.697804Z"
+ "end_time": "2020-10-11T03:32:44.352129Z",
+ "start_time": "2020-10-11T03:32:44.339056Z"
}
},
"outputs": [],
@@ -100,53 +101,170 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 4,
"metadata": {
"ExecuteTime": {
- "end_time": "2020-10-09T12:10:25.614936Z",
- "start_time": "2020-10-09T12:10:25.607910Z"
+ "end_time": "2020-10-11T03:32:45.497342Z",
+ "start_time": "2020-10-11T03:32:45.491342Z"
}
},
"outputs": [],
"source": [
"N = 1000\n",
- "p = 4\n",
+ "p = 3\n",
"edge_idx = 28\n",
+ "degree = 4\n",
" "
]
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 5,
"metadata": {
"ExecuteTime": {
- "end_time": "2020-10-09T12:11:20.886351Z",
- "start_time": "2020-10-09T12:10:57.276722Z"
- },
- "scrolled": false
+ "end_time": "2020-10-11T03:32:46.435411Z",
+ "start_time": "2020-10-11T03:32:46.164940Z"
+ }
},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Line graph nodes 1671\n"
+ ]
+ }
+ ],
"source": [
- " \n",
"gamma, beta = [.1]*p, [.3]*p\n",
- "graph = qt.toolbox.random_graph(nodes=N, degree=4, seed=108)\n",
+ "graph = qt.toolbox.random_graph(nodes=N, degree=degree, seed=108)\n",
"\n",
"comp = qt.QtreeQAOAComposer(graph, gamma=gamma, beta=beta)\n",
"\n",
"comp.energy_expectation_lightcone(list(graph.edges())[edge_idx])\n",
"tn = qt.optimisation.TensorNet.QtreeTensorNet.from_qtree_gates(comp.circuit)\n",
+ "line_graph = tn.get_line_graph()\n",
+ "print('Line graph nodes', line_graph.number_of_nodes())"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Using greedy optimizer"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2020-10-11T03:32:49.121865Z",
+ "start_time": "2020-10-11T03:32:48.199388Z"
+ },
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "treewidth 21\n"
+ ]
+ }
+ ],
+ "source": [
"opt = qt.optimisation.Optimizer.DefaultOptimizer()\n",
"peo, _ = opt.optimize(tn)\n",
+ "print('treewidth', opt.treewidth)\n",
+ "if opt.treewidth > 100:\n",
+ " raise Exception('Too large treewidth')\n",
"costs, mems = tn.simulation_cost(peo)"
]
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 7,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2020-10-11T03:32:50.149626Z",
+ "start_time": "2020-10-11T03:32:49.123067Z"
+ },
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total FLOPS=0.034049645 G, Memory=0.033554432 G\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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BsYYY8iTgepGjBihlZWVPdq3qamJ0tLSzAaUBYUYdyHGDBZ3NhVizFCYcTc1NbFhw4b9qjoyIwfM9XgYqsq8efO0p1544YUe75tLhRh3IcasanFnUyHGrFqYcb/wwgsKvK79YWwiEVksIncdOnQol2EYY8yAZ20GxhhjcpsMVPUJVV1aUVGRyzCMMWbAy4sG5HgCgQC1tbW0trYm3a6iooL169dnKarMyXTcxcXFjB07Fq833cEyjTEmx8lARBYDi6dMOWLyK2praykvL6eyspLIGFvxNTQ0UF5e3odR9o1Mxq2q1NXVUVtby8SJEzNyTGPMwJK31UStra0MHz48aSIwESLC8OHDuy1FGWNMInndm8gSQersWhljeiNvSwbGGNOfPFLXxL5A/k79YF1Lk7j11luZMWMGY8aM4Zprrsl1OMaYAnUwGOILH+xn8fq9uQ4lobztTZQP/uu//ovnnnuO5557jtdffz3X4RhjClTQGQ90a1v+TlmR120GuXT11VezdetWzjvvPA4ePNi+vKamhjPOOIPZs2dz5plnsn37dgCuuOIKrr76aubPn8+0adN48sknAXjvvfdYsGABc+bMYfbs2WzatCknn8cYkzvRG204jweJzmnJQFWfAJ6YP3/+V5Jtt+9/bqXtw81x14VCIQ653Wmfu2jiFEZelXjGvjvvvJP//d//5YUXXmi/sQN8/etf5/LLL+fyyy9n2bJlXHvttTz22GNAJFG89tprbNmyhdNPP53Nmzdz55138o1vfINLL70Uv99PKJS/dYbGmL7hdjp4HAyF+cqWOu6ePDzHER3J2gzStHr1ai655BIAvvjFL/Lyyx1T+37hC1/A5XIxdepUJk2axIYNGzjppJP46U9/ys0338y2bdsYNGhQrkI3xuRIbF+/ZXsbcxZHMgXRZpDsG3w+PXTWtXuniHDJJZewcOFCnnrqKT71qU/xm9/8hjPOOCNHERpjciGPa4faWZtBmj7+8Y+zYsUKAH7/+99z6qmntq97+OGHCYfDbNmyha1btzJ9+nS2bt3KpEmTuPbaazn//PN55513chW6McYkZM8ZpOm2227jnnvuYfbs2TzwwAPccsst7evGjx/PggULOO+887jzzjspLi5m5cqVzJo1izlz5rBu3Touu+yyHEZvjMkFLYCyQUFUE+VKTU0NEOkpdMUVVwAwYcIE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\n",
+ "text/plain": [
+ "