From 05f4b62399c094bc0fdc505757652caec7927ba3 Mon Sep 17 00:00:00 2001 From: yxygit <378065101@qq.com> Date: Tue, 4 Jun 2019 10:56:48 +0800 Subject: [PATCH] Initial commit --- .gitattributes | 2 + .ipynb_checkpoints/00-minst-checkpoint.ipynb | 6 + .ipynb_checkpoints/01-KNN-checkpoint.ipynb | 246 + .../02-NaiveBayes-checkpoint.ipynb | 185 + .../03-DecisionTree-checkpoint.ipynb | 6664 +++++++++++++++++ .../04-logistic-checkpoint.ipynb | 177 + .../05-MaxEntropy-checkpoint.ipynb | 378 + .ipynb_checkpoints/06-SVM-checkpoint.ipynb | 1361 ++++ .../07-AdaBoost-checkpoint.ipynb | 6 + 00-minst.ipynb | 232 + 01-KNN.ipynb | 246 + 02-NaiveBayes.ipynb | 185 + 03-DecisionTree.ipynb | 6664 +++++++++++++++++ 04-logistic.ipynb | 177 + 05-MaxEntropy.ipynb | 378 + 06-SVM.ipynb | 1361 ++++ 07-AdaBoost.ipynb | 2395 ++++++ __pycache__/minst.cpython-36.pyc | Bin 0 -> 1054 bytes minst.py | 32 + 19 files changed, 20695 insertions(+) create mode 100644 .gitattributes create mode 100644 .ipynb_checkpoints/00-minst-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/01-KNN-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/02-NaiveBayes-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/03-DecisionTree-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/04-logistic-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/05-MaxEntropy-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/06-SVM-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/07-AdaBoost-checkpoint.ipynb create mode 100644 00-minst.ipynb create mode 100644 01-KNN.ipynb create mode 100644 02-NaiveBayes.ipynb create mode 100644 03-DecisionTree.ipynb create mode 100644 04-logistic.ipynb create mode 100644 05-MaxEntropy.ipynb create mode 100644 06-SVM.ipynb create mode 100644 07-AdaBoost.ipynb create mode 100644 __pycache__/minst.cpython-36.pyc create mode 100644 minst.py diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..eba1110 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto \ No newline at end of file diff --git a/.ipynb_checkpoints/00-minst-checkpoint.ipynb b/.ipynb_checkpoints/00-minst-checkpoint.ipynb new file mode 100644 index 0000000..2fd6442 --- /dev/null +++ b/.ipynb_checkpoints/00-minst-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/.ipynb_checkpoints/01-KNN-checkpoint.ipynb b/.ipynb_checkpoints/01-KNN-checkpoint.ipynb new file mode 100644 index 0000000..b89fb21 --- /dev/null +++ b/.ipynb_checkpoints/01-KNN-checkpoint.ipynb @@ -0,0 +1,246 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n" + ] + } + ], + "source": [ + "from minst import loadData\n", + "dataArr, labelArr=loadData('D:/Jupyter/mnist_train.csv')\n", + "testDataArr, testLabelArr = loadData('D:/Jupyter/mnist_test.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "def calcDist(x1, x2):\n", + " '''\n", + " 计算两个样本点向量之间的距离\n", + " 使用的是欧氏距离,即 样本点每个元素相减的平方 再求和 再开方\n", + " :param x1:向量1\n", + " :param x2:向量2\n", + " :return:向量之间的欧式距离\n", + " '''\n", + " return np.sqrt(np.sum(np.square(x1 - x2)))\n", + "\n", + " #马哈顿距离计算公式\n", + " # return np.sum(x1 - x2)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def getClosest(trainDataMat, trainLabelMat, x, topK):\n", + " '''\n", + " 预测样本x的标记。\n", + " 获取方式通过找到与样本x最近的topK个点,并查看它们的标签。\n", + " 查找里面占某类标签最多的那类标签\n", + " (书中3.1 3.2节)\n", + " :param trainDataMat:训练集数据集\n", + " :param trainLabelMat:训练集标签集\n", + " :param x:要预测的样本x\n", + " :param topK:选择参考最邻近样本的数目(样本数目的选择关系到正确率,详看3.2.3 K值的选择)\n", + " :return:预测的标记\n", + " '''\n", + " distList = [0] * len(trainLabelMat) # [0]*5=[0 0 0 0 0]\n", + "\n", + " for i in range(len(trainDataMat)): #获取训练集中当前样本的向量\n", + "\n", + " x1 = trainDataMat[i] #计算向量x与训练集样本x的距离\n", + " curDist = calcDist(x1, x) #将距离放入对应的列表位置中\n", + " distList[i] = curDist\n", + " \n", + " topKList = np.argsort(np.array(distList))[:topK] #前K个升序排序 \n", + " '''排序的只是索引index!!!!!'''\n", + " \n", + " labelList = [0] * 10 \n", + " for index in topKList:\n", + " '''遍历的是array里的元素!!!!'''\n", + " \n", + " #trainLabelMat[index]:在训练集标签中寻找topK元素索引对应的标记\n", + " #int(trainLabelMat[index]):将标记转换为int(实际上已经是int了,但是不int的话,报错)\n", + " #labelList[int(trainLabelMat[index])]:找到标记在labelList中对应的位置\n", + " #最后加1,表示投了一票\n", + " \n", + " labelList[int(trainLabelMat[index])] += 1\n", + " \n", + " #max(labelList):找到选票箱中票数最多的票数值\n", + " #labelList.index(max(labelList)):再根据最大值在列表中找到该值对应的索引,等同于预测的标记\n", + " return labelList.index(max(labelList)) " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n" + ] + } + ], + "source": [ + "trainDataMat = np.mat(dataArr)\n", + "trainLabelMat = np.mat(labelArr).T\n", + "testDataMat = np.mat(testDataArr)\n", + "testLabelMat = np.mat(testLabelArr).T" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "test 0 predict:7 true:7 \n", + "test 1 predict:2 true:2 \n", + "test 2 predict:1 true:1 \n", + "test 3 predict:0 true:0 \n", + "test 4 predict:4 true:4 \n", + "test 5 predict:1 true:1 \n", + "test 6 predict:4 true:4 \n", + "test 7 predict:9 true:9 \n", + "test 8 predict:5 true:5 \n", + "test 9 predict:9 true:9 \n", + "test 10 predict:0 true:0 \n", + "test 11 predict:6 true:6 \n", + "test 12 predict:9 true:9 \n", + "test 13 predict:0 true:0 \n", + "test 14 predict:1 true:1 \n", + "test 15 predict:5 true:5 \n", + "test 16 predict:9 true:9 \n", + "test 17 predict:7 true:7 \n", + "test 18 predict:3 true:3 \n", + "test 19 predict:4 true:4 \n", + "test 20 predict:9 true:9 \n", + "test 21 predict:6 true:6 \n", + "test 22 predict:6 true:6 \n", + "test 23 predict:5 true:5 \n", + "test 24 predict:4 true:4 \n", + "test 25 predict:0 true:0 \n", + "test 26 predict:7 true:7 \n", + "test 27 predict:4 true:4 \n", + "test 28 predict:0 true:0 \n", + "test 29 predict:1 true:1 \n", + "test 30 predict:3 true:3 \n", + "test 31 predict:1 true:1 \n", + "test 32 predict:3 true:3 \n", + "test 33 predict:4 true:4 \n", + "test 34 predict:7 true:7 \n", + "test 35 predict:2 true:2 \n", + "test 36 predict:7 true:7 \n", + "test 37 predict:1 true:1 \n", + "test 38 predict:2 true:2 \n", + "test 39 predict:1 true:1 \n", + "test 40 predict:1 true:1 \n", + "test 41 predict:7 true:7 \n", + "test 42 predict:4 true:4 \n", + "test 43 predict:1 true:2 \n", + "test 44 predict:3 true:3 \n", + "test 45 predict:5 true:5 \n", + "test 46 predict:1 true:1 \n", + "test 47 predict:2 true:2 \n", + "test 48 predict:4 true:4 \n", + "test 49 predict:4 true:4 \n", + "accuracy:0 \n" + ] + } + ], + "source": [ + "errorCnt = 0\n", + "topK = 25\n", + "n = 50\n", + "for i in range(n):\n", + " x = testDataMat[i] #读取测试集当前测试样本的向量\n", + " y = getClosest(trainDataMat, trainLabelMat, x, topK) #获取预测的标记\n", + " print('test %d predict:%d true:%d ' % (i,y,testLabelMat[i]))\n", + " if y != testLabelMat[i]: \n", + " errorCnt += 1 #如果预测标记与实际标记不符,错误值计数加1\n", + " \n", + "accuracy = 1 - (errorCnt / n)\n", + "print(accuracy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "oldHeight": 210, + "position": { + "height": "40px", + "left": "705px", + "right": "20px", + "top": "133px", + "width": "481px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "varInspector_section_display": "none", + "window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/.ipynb_checkpoints/02-NaiveBayes-checkpoint.ipynb b/.ipynb_checkpoints/02-NaiveBayes-checkpoint.ipynb new file mode 100644 index 0000000..4cc92f6 --- /dev/null +++ b/.ipynb_checkpoints/02-NaiveBayes-checkpoint.ipynb @@ -0,0 +1,185 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n", + "start read file\n" + ] + } + ], + "source": [ + "from minst import loadData\n", + "trainDataArr, trainLabelArr = loadData(fileName='D:/Jupyter/mnist_train.csv',data_bin=1)\n", + "testDataArr, testLabelArr = loadData(fileName='D:/Jupyter/mnist_test.csv',data_bin=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import time\n", + "\n", + "def getAllProbability(trainDataArr, trainLabelArr,K=10,alambda=1):\n", + " '''\n", + " 通过训练集计算先验概率分布和条件概率分布\n", + " :param trainDataArr: 训练数据集\n", + " :param trainLabelArr: 训练标记集\n", + " :param K: 标记个数\n", + " :param alambda: 平滑算子(防止出现0)\n", + " :return: 先验概率分布P(Y)和条件概率分布P(X=x|Y=y)\n", + " '''\n", + " featureNum = 784 #特征数\n", + " \n", + " '''先验概率分布P(Y)'''\n", + " Py = np.zeros((K, 1))\n", + " for i in range(K):\n", + " Py[i] = (np.sum(np.mat(trainLabelArr)==i)+ alambda)/(len(trainLabelArr)+K) #np.sum(trainLabel==i)---矩阵trainLabel==i中Ture的个数,即label中有多少个为i的标记\n", + " Py = np.log(Py) #转换为log对数形式\n", + "\n", + " '''条件概率分布P(X=x|Y=y)'''\n", + " Px_y = np.zeros((K, featureNum, 2)) \n", + " for i in range(len(trainLabelArr)): #计算y=label,第j个特征为0和1的个数\n", + " label = trainLabelArr[i]\n", + " x = trainDataArr[i]\n", + " for j in range(featureNum):\n", + " Px_y[label][j][x[j]] += 1 # x[j]=0或1\n", + "\n", + " for label in range(K): \n", + " for j in range(featureNum): \n", + " \n", + " Px_y0 = Px_y[label][j][0] #获取y=label,第j个特诊为0的个数 \n", + " Px_y1 = Px_y[label][j][1] #获取y=label,第j个特诊为1的个数\n", + " \n", + " #分别计算对于y= label,x第j个特征为0和1的条件概率分布\n", + " Px_y[label][j][0] = np.log((Px_y0 + alambda) / (Px_y0 + Px_y1 + 2*alambda))\n", + " Px_y[label][j][1] = np.log((Px_y1 + alambda) / (Px_y0 + Px_y1 + 2*alambda))\n", + "\n", + " return Py, Px_y \n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "Py, Px_y = getAllProbability(trainDataArr, trainLabelArr)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def NaiveBayes(Py, Px_y, x,K=10):\n", + " '''\n", + " 通过朴素贝叶斯进行概率估计\n", + " :param Py: 先验概率分布\n", + " :param Px_y: 条件概率分布\n", + " :param x: 要估计的样本x\n", + " :return: 返回所有label的估计概率\n", + " '''\n", + " \n", + " featrueNum = 784 #设置特征数目\n", + " P = [0] * K #建立存放所有标记的估计概率数组 \n", + "\n", + " for label in range(K): #对于每一个类别,单独估计其概率 \n", + " #在训练过程中对概率进行了log处理,所以这里原先应当是连乘所有概率,最后比较哪个概率最大.但是当使用log处理时,连乘变成了累加,所以使用sum \n", + " sum = 0 \n", + " for j in range(featrueNum):\n", + " sum += Px_y[label][j][x[j]]\n", + " P[i] = sum + Py[label]\n", + "\n", + " return P.index(max(P)) #找到该概率最大值对应的所有(索引值和标签值相等)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "errorCnt = 0\n", + "\n", + "for i in range(len(testDataArr)):\n", + " presict = NaiveBayes(Py, Px_y,testDataArr[i])\n", + " if presict != testLabelArr[i]:\n", + " errorCnt += 1\n", + "\n", + "accuracy = 1 - (errorCnt / len(testDataArr))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "oldHeight": 233, + "position": { + "height": "40px", + "left": "911px", + "right": "20px", + "top": "106px", + "width": "350px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "varInspector_section_display": "none", + "window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/.ipynb_checkpoints/03-DecisionTree-checkpoint.ipynb b/.ipynb_checkpoints/03-DecisionTree-checkpoint.ipynb new file mode 100644 index 0000000..1ace579 --- /dev/null +++ b/.ipynb_checkpoints/03-DecisionTree-checkpoint.ipynb @@ -0,0 +1,6664 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n", + "start read file\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from minst import loadData\n", + "trainDataArr, trainLabelArr = loadData(fileName='D:/Jupyter/mnist_train.csv',data_bin=1)\n", + "testDataArr, testLabelArr = loadData(fileName='D:/Jupyter/mnist_test.csv',data_bin=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def calc_H_D(trainLabelArr):\n", + " '''\n", + " 计算数据集D的经验熵,参考公式5.7 经验熵的计算 \n", + " :param trainLabelArr:当前数据集的标签集\n", + " :return: 经验熵\n", + " '''\n", + " H_D = 0\n", + " trainLabelSet = set([label for label in trainLabelArr]) #将当前所有标签放入集合中(防止没有出现过的标签,导致log2(0/D) = log2(0))\n", + " \n", + " #计算|Ck|/|D|\n", + " for i in trainLabelSet: \n", + " p = trainLabelArr[trainLabelArr == i].size / trainLabelArr.size\n", + " H_D += -1 * p * np.log2(p)\n", + " return H_D" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def calcH_D_A(trainDataArr_DevFeature, trainLabelArr):\n", + " '''\n", + " 计算经验条件熵\n", + " :param trainDataArr_DevFeature:切割后只有feature那列数据的数组\n", + " :param trainLabelArr: 标签集数组\n", + " :return: 经验条件熵\n", + " '''\n", + " H_D_A = 0\n", + " trainDataSet = set([label for label in trainDataArr_DevFeature]) #在featue那列放入集合中,该feature目前可取值数目是多少({0,1})\n", + " for i in trainDataSet: #计算H(D|A)=|Di| / |D| * H(Di)\n", + " H_D_A += trainDataArr_DevFeature[trainDataArr_DevFeature == i].size / trainDataArr_DevFeature.size * calc_H_D(trainLabelArr[trainDataArr_DevFeature == i])\n", + " return H_D_A " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def calcBestFeature(trainDataList, trainLabelList):\n", + " '''\n", + " 计算信息增益最大的特征\n", + " :param trainDataList: 当前数据集\n", + " :param trainLabelList: 当前标签集\n", + " :return: 信息增益最大的特征及最大信息增益值\n", + " '''\n", + " trainDataArr = np.array(trainDataList)\n", + " trainLabelArr = np.array(trainLabelList).T\n", + " \n", + " featureNum = trainDataArr.shape[1] #获取当前特征数目,也就是数据集的横轴大小\n", + " maxG_D_A = -1 #初始化最大信息增益\n", + " maxFeature = -1 #初始化最大信息增益的特征\n", + " H_D = calc_H_D(trainLabelArr) #计算数据集D的经验熵H(D)\n", + " \n", + " for feature_index in range(featureNum):\n", + " #数据集在初始时刻是一个Arr = 60000*784的矩阵,针对当前要计算的feature,在训练集中切割下Arr[:, feature]这么一条来\n", + " #trainDataArr[:, feature]:在数据集中切割下这么一条\n", + " #trainDataArr[:, feature].flat:将这么一条转换成竖着的列表\n", + " #np.array(trainDataArr[:, feature].flat):再转换成一条竖着的矩阵\n", + " trainDataArr_DevideByFeature = np.array(trainDataArr[:, feature_index].flat)\n", + " G_D_A = H_D - calcH_D_A(trainDataArr_DevideByFeature, trainLabelArr) #计算信息增益G(D|A) = H(D) - H(D | A)\n", + " # G_D_A = calcH_D_A(trainDataArr_DevideByFeature, trainLabelArr) / H_D #计算信息增益G(D|A) = H(D | A) / H(D) \n", + " if G_D_A > maxG_D_A:\n", + " maxG_D_A = G_D_A\n", + " maxFeature = feature_index\n", + " \n", + " return maxFeature, maxG_D_A" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def getSubDataArr(trainDataArr, trainLabelArr, A_index, a):\n", + " '''\n", + " 更新数据集和标签集\n", + " :param trainDataArr:要更新的数据集\n", + " :param trainLabelArr: 要更新的标签集\n", + " :param A_index: 要去除的特征索引\n", + " :param a: 当data[A]== a时,说明该行样本时要保留的\n", + " :return: 新的数据集和标签集\n", + " '''\n", + " retDataArr = []\n", + " retLabelArr = [] \n", + " \n", + " for i in range(len(trainDataArr)): #6000\n", + " if trainDataArr[i][A_index] == a: #0,1 #如果当前样本的特征为指定特征值a \n", + " retDataArr.append(trainDataArr[i][0:A_index] + trainDataArr[i][A_index+1:])#那么将该样本的第A个特征切割掉,放入返回的数据集中\n", + " retLabelArr.append(trainLabelArr[i]) #将该样本的标签放入返回标签集中\n", + "\n", + " return retDataArr, retLabelArr" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def majorClass(labelArr):\n", + " '''\n", + " 找到当前标签集中占数目最大的标签\n", + " :param labelArr: 标签集\n", + " :return: 最大的标签\n", + " ''' \n", + " classDict = {} #建立字典,用于不同类别的标签计数\n", + " for i in range(len(labelArr)): #遍历所有标签\n", + " if labelArr[i] in classDict.keys(): #当第一次遇到A标签时,字典内还没有A标签,这时候直接幅值加1是错误的,所以需要判断字典中是否有该key,没有则创建,有就直接自增\n", + " classDict[labelArr[i]] += 1 # 若在字典中存在该标签,则直接加1\n", + " else: #若无该标签,设初值为1,表示出现了1次了\n", + " classDict[labelArr[i]] = 1\n", + " classSort = sorted(classDict.items(), key=lambda x: x[1], reverse=True) #对字典依据值进行降序排序 \n", + " # .items() ----- 以列表返回可遍历的(key, value) 元组数组。\n", + " # key=lambda x: x[1]----- 以(key, value) 的第二项排序\n", + "\n", + " return classSort[0][0] #返回最大一项的标签,即占数目最多的标签" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def createTree(*dataSet):\n", + " '''\n", + " 递归创建决策树\n", + " :param dataSet:(trainDataList, trainLabelList) <<-- 元祖形式\n", + " :return:新的子节点或该叶子节点的值\n", + " '''\n", + " Epsilon = 0.1 #信息增益与阈值Epsilon比较,若小于则直接处理后返回T\n", + " trainDataList = dataSet[0][0]\n", + " trainLabelList = dataSet[0][1]\n", + " \n", + " #打印信息:开始一个子节点创建,打印当前特征向量数目及当前剩余样本数目\n", + " print('start a node', len(trainDataList[0]), len(trainLabelList))\n", + " \n", + " classDict = {i for i in trainLabelList} #将标签放入一个字典中,当前样本有多少类,在字典中就会有多少项\n", + " if len(classDict) == 1: #如果D中所有实例属于同一类Ck,则置T为单节点数,并将Ck作为该节点的类,返回T\n", + " return trainLabelList[0] #即若所有样本的标签一致,也就不需要再分化,返回标记作为该节点的值,返回后这就是一个叶子节点\n", + " \n", + " if len(trainDataList[0]) == 0: #如果A为空集,则置T为单节点数,并将D中实例数最大的类Ck作为该节点的类,返回T\n", + " return majorClass(trainLabelList) #即如果已经没有特征可以用来再分化了,就返回占大多数的类别\n", + " \n", + "\n", + " maxFeature, maxG_D_A = calcBestFeature(trainDataList, trainLabelList) #否则,计算A中每个特征值的信息增益,选择信息增益最大的特征maxFeature\n", + " if maxG_D_A < Epsilon: #如果maxFeature的信息增益比小于阈值Epsilon,则置T为单节点树,\n", + " return majorClass(trainLabelList) #并将D中实例数最大的类Ck作为该节点的类,返回T\n", + "\n", + " treeDict = {maxFeature:{}}#否则,对maxFeature的每一可能值ai,依maxFeature=ai将D分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子节点,由节点及其子节点构成树T,返回T\n", + " \n", + " #在当前数据集中切割当前feature,返回新的数据集和标签集\n", + " treeDict[maxFeature][0] = createTree(getSubDataArr(trainDataList, trainLabelList, maxFeature, 0)) #特征值为0时,进入0分支\n", + " treeDict[maxFeature][1] = createTree(getSubDataArr(trainDataList, trainLabelList, maxFeature, 1))\n", + " \n", + " return treeDict" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 784 60000\n", + "start a node 783 33587\n", + "start a node 782 23938\n", + "start a node 781 18700\n", + "start a node 780 11336\n", + "start a node 779 8724\n", + "start a node 778 7677\n", + "start a node 777 6831\n", + "start a node 776 6242\n", + "start a node 775 5840\n", + "start a node 775 402\n", + "start a node 774 220\n", + "start a node 773 171\n", + "start a node 772 142\n", + "start a node 771 133\n", + "start a node 770 128\n", + "start a node 769 125\n", + "start a node 768 123\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 770 5\n", + "start a node 769 2\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 768 1\n", + "start a node 771 9\n", + "start a node 770 6\n", + "start a node 769 5\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 772 29\n", + "start a node 771 8\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 770 5\n", + "start a node 771 21\n", + "start a node 770 7\n", + "start a node 769 6\n", + "start a node 769 1\n", + "start a node 770 14\n", + "start a node 769 13\n", + "start a node 769 1\n", + "start a node 773 49\n", + "start a node 772 20\n", + "start a node 771 18\n", + "start a node 770 17\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 29\n", + "start a node 771 16\n", + "start a node 770 10\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 769 7\n", + "start a node 770 6\n", + "start a node 769 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 771 13\n", + "start a node 770 4\n", + "start a node 770 9\n", + "start a node 769 8\n", + "start a node 769 1\n", + "start a node 774 182\n", + "start a node 773 39\n", + "start a node 772 32\n", + "start a node 771 13\n", + "start a node 770 11\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 771 19\n", + "start a node 770 17\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 769 14\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 7\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 773 143\n", + "start a node 772 12\n", + "start a node 771 9\n", + "start a node 770 5\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 772 131\n", + "start a node 771 125\n", + "start a node 770 97\n", + "start a node 770 28\n", + "start a node 769 10\n", + "start a node 768 5\n", + "start a node 768 5\n", + "start a node 767 4\n", + "start a node 767 1\n", + "start a node 769 18\n", + "start a node 771 6\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 776 589\n", + "start a node 775 404\n", + "start a node 774 338\n", + "start a node 773 252\n", + "start a node 772 87\n", + "start a node 771 73\n", + "start a node 770 63\n", + "start a node 769 19\n", + "start a node 768 12\n", + "start a node 767 8\n", + "start a node 766 6\n", + "start a node 766 2\n", + "start a node 765 1\n", + "start a node 765 1\n", + "start a node 767 4\n", + "start a node 766 2\n", + "start a node 766 2\n", + "start a node 765 1\n", + "start a node 765 1\n", + "start a node 768 7\n", + "start a node 767 4\n", + "start a node 766 2\n", + "start a node 766 2\n", + "start a node 767 3\n", + "start a node 766 2\n", + "start a node 766 1\n", + "start a node 769 44\n", + "start a node 768 39\n", + "start a node 767 30\n", + "start a node 766 27\n", + "start a node 765 14\n", + "start a node 765 13\n", + "start a node 764 6\n", + "start a node 763 5\n", + "start a node 763 1\n", + "start a node 764 7\n", + "start a node 763 2\n", + "start a node 763 5\n", + "start a node 766 3\n", + "start a node 765 2\n", + "start a node 765 1\n", + "start a node 767 9\n", + "start a node 766 8\n", + "start a node 766 1\n", + "start a node 768 5\n", + "start a node 767 3\n", + "start a node 767 2\n", + "start a node 770 10\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 768 1\n", + "start a node 769 7\n", + "start a node 771 14\n", + "start a node 770 12\n", + "start a node 770 2\n", + "start a node 772 165\n", + "start a node 771 105\n", + "start a node 770 80\n", + "start a node 769 64\n", + "start a node 768 62\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 16\n", + "start a node 768 11\n", + "start a node 767 10\n", + "start a node 767 1\n", + "start a node 768 5\n", + "start a node 767 1\n", + "start a node 767 4\n", + "start a node 770 25\n", + "start a node 769 24\n", + "start a node 769 1\n", + "start a node 771 60\n", + "start a node 770 57\n", + "start a node 769 56\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 773 86\n", + "start a node 772 54\n", + "start a node 771 26\n", + "start a node 770 16\n", + "start a node 769 7\n", + "start a node 768 3\n", + "start a node 768 4\n", + "start a node 767 2\n", + "start a node 767 2\n", + "start a node 769 9\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 767 1\n", + "start a node 768 6\n", + "start a node 767 1\n", + "start a node 767 5\n", + "start a node 766 2\n", + "start a node 766 3\n", + "start a node 765 1\n", + "start a node 765 2\n", + "start a node 770 10\n", + "start a node 771 28\n", + "start a node 770 25\n", + "start a node 769 23\n", + "start a node 768 22\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 772 32\n", + "start a node 771 20\n", + "start a node 770 18\n", + "start a node 769 17\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 12\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 8\n", + "start a node 774 66\n", + "start a node 773 60\n", + "start a node 772 56\n", + "start a node 771 55\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 772 3\n", + "start a node 775 185\n", + "start a node 774 169\n", + "start a node 773 162\n", + "start a node 772 76\n", + "start a node 771 43\n", + "start a node 770 27\n", + "start a node 769 9\n", + "start a node 768 4\n", + "start a node 767 2\n", + "start a node 767 2\n", + "start a node 766 1\n", + "start a node 766 1\n", + "start a node 768 5\n", + "start a node 767 1\n", + "start a node 767 4\n", + "start a node 769 18\n", + "start a node 768 16\n", + "start a node 767 11\n", + "start a node 767 5\n", + "start a node 766 2\n", + "start a node 766 3\n", + "start a node 768 2\n", + "start a node 770 16\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 14\n", + "start a node 771 33\n", + "start a node 770 14\n", + "start a node 769 7\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 5\n", + "start a node 769 7\n", + "start a node 768 2\n", + "start a node 768 5\n", + "start a node 770 19\n", + "start a node 772 86\n", + "start a node 771 84\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 79\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 773 7\n", + "start a node 772 5\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 16\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 13\n", + "start a node 777 846\n", + "start a node 776 479\n", + "start a node 775 369\n", + "start a node 774 302\n", + "start a node 773 253\n", + "start a node 772 244\n", + "start a node 771 231\n", + "start a node 770 224\n", + "start a node 769 216\n", + "start a node 769 8\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 767 1\n", + "start a node 768 5\n", + "start a node 770 7\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 771 13\n", + "start a node 770 7\n", + "start a node 769 3\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 770 6\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 4\n", + "start a node 772 9\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 5\n", + "start a node 773 49\n", + "start a node 772 27\n", + "start a node 771 16\n", + "start a node 770 12\n", + "start a node 769 5\n", + "start a node 768 3\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 7\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 771 11\n", + "start a node 770 8\n", + "start a node 769 7\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 772 22\n", + "start a node 771 20\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 774 67\n", + "start a node 773 28\n", + "start a node 772 13\n", + "start a node 771 10\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 772 15\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 12\n", + "start a node 770 10\n", + "start a node 769 1\n", + "start a node 769 9\n", + "start a node 770 2\n", + "start a node 773 39\n", + "start a node 772 27\n", + "start a node 771 24\n", + "start a node 770 13\n", + "start a node 769 6\n", + "start a node 768 5\n", + "start a node 768 1\n", + "start a node 769 7\n", + "start a node 768 5\n", + "start a node 768 2\n", + "start a node 770 11\n", + "start a node 771 3\n", + "start a node 772 12\n", + "start a node 771 9\n", + "start a node 771 3\n", + "start a node 775 110\n", + "start a node 774 81\n", + "start a node 773 76\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 772 73\n", + "start a node 771 71\n", + "start a node 771 2\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 774 29\n", + "start a node 773 23\n", + "start a node 772 17\n", + "start a node 771 14\n", + "start a node 770 12\n", + "start a node 770 2\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 6\n", + "start a node 771 5\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 776 367\n", + "start a node 775 140\n", + "start a node 774 46\n", + "start a node 773 34\n", + "start a node 772 27\n", + "start a node 771 23\n", + "start a node 770 21\n", + "start a node 769 20\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 770 3\n", + "start a node 771 2\n", + "start a node 773 12\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 774 94\n", + "start a node 773 83\n", + "start a node 772 71\n", + "start a node 771 66\n", + "start a node 770 40\n", + "start a node 769 29\n", + "start a node 768 26\n", + "start a node 767 18\n", + "start a node 767 8\n", + "start a node 766 4\n", + "start a node 765 2\n", + "start a node 765 2\n", + "start a node 766 4\n", + "start a node 768 3\n", + "start a node 769 11\n", + "start a node 768 9\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 770 26\n", + "start a node 769 5\n", + "start a node 768 4\n", + "start a node 768 1\n", + "start a node 769 21\n", + "start a node 768 19\n", + "start a node 768 2\n", + "start a node 771 5\n", + "start a node 772 12\n", + "start a node 771 11\n", + "start a node 771 1\n", + "start a node 773 11\n", + "start a node 772 1\n", + "start a node 772 10\n", + "start a node 775 227\n", + "start a node 774 215\n", + "start a node 773 188\n", + "start a node 772 174\n", + "start a node 772 14\n", + "start a node 771 6\n", + "start a node 771 8\n", + "start a node 773 27\n", + "start a node 772 18\n", + "start a node 771 16\n", + "start a node 770 15\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 9\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 7\n", + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 778 1047\n", + "start a node 777 530\n", + "start a node 776 261\n", + "start a node 775 182\n", + "start a node 774 157\n", + "start a node 773 79\n", + "start a node 772 56\n", + "start a node 771 40\n", + "start a node 770 29\n", + "start a node 769 21\n", + "start a node 768 19\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 8\n", + "start a node 768 4\n", + "start a node 767 3\n", + "start a node 767 1\n", + "start a node 768 4\n", + "start a node 770 11\n", + "start a node 769 7\n", + "start a node 769 4\n", + "start a node 771 16\n", + "start a node 770 15\n", + "start a node 770 1\n", + "start a node 772 23\n", + "start a node 773 78\n", + "start a node 774 25\n", + "start a node 773 21\n", + "start a node 772 20\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 775 79\n", + "start a node 774 43\n", + "start a node 773 22\n", + "start a node 772 12\n", + "start a node 771 9\n", + "start a node 770 6\n", + "start a node 770 3\n", + "start a node 771 3\n", + "start a node 772 10\n", + "start a node 771 5\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 773 21\n", + "start a node 772 12\n", + "start a node 771 10\n", + "start a node 771 2\n", + "start a node 772 9\n", + "start a node 771 7\n", + "start a node 771 2\n", + "start a node 774 36\n", + "start a node 773 33\n", + "start a node 772 32\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 776 269\n", + "start a node 775 186\n", + "start a node 774 164\n", + "start a node 773 75\n", + "start a node 772 48\n", + "start a node 771 39\n", + "start a node 770 21\n", + "start a node 769 20\n", + "start a node 769 1\n", + "start a node 770 18\n", + "start a node 769 3\n", + "start a node 769 15\n", + "start a node 768 10\n", + "start a node 768 5\n", + "start a node 767 3\n", + "start a node 767 2\n", + "start a node 771 9\n", + "start a node 770 8\n", + "start a node 770 1\n", + "start a node 772 27\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 24\n", + "start a node 773 89\n", + "start a node 772 87\n", + "start a node 771 84\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 774 22\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 17\n", + "start a node 772 16\n", + "start a node 772 1\n", + "start a node 775 83\n", + "start a node 774 78\n", + "start a node 773 65\n", + "start a node 772 53\n", + "start a node 772 12\n", + "start a node 771 9\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 773 13\n", + "start a node 772 9\n", + "start a node 771 8\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 774 5\n", + "start a node 777 517\n", + "start a node 776 508\n", + "start a node 776 9\n", + "start a node 775 6\n", + "start a node 775 3\n", + "start a node 779 2612\n", + "start a node 778 1323\n", + "start a node 777 1070\n", + "start a node 776 915\n", + "start a node 775 673\n", + "start a node 774 644\n", + "start a node 773 520\n", + "start a node 773 124\n", + "start a node 772 94\n", + "start a node 771 82\n", + "start a node 770 79\n", + "start a node 769 74\n", + "start a node 769 5\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 771 12\n", + "start a node 770 8\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 772 30\n", + "start a node 771 26\n", + "start a node 771 4\n", + "start a node 774 29\n", + "start a node 773 13\n", + "start a node 772 9\n", + "start a node 771 7\n", + "start a node 771 2\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 773 16\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 772 11\n", + "start a node 771 10\n", + "start a node 771 1\n", + "start a node 775 242\n", + "start a node 774 130\n", + "start a node 773 44\n", + "start a node 772 34\n", + "start a node 771 30\n", + "start a node 770 28\n", + "start a node 769 26\n", + "start a node 769 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 771 4\n", + "start a node 772 10\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 8\n", + "start a node 770 7\n", + "start a node 770 1\n", + "start a node 773 86\n", + "start a node 772 76\n", + "start a node 771 50\n", + "start a node 770 9\n", + "start a node 769 5\n", + "start a node 768 4\n", + "start a node 768 1\n", + "start a node 769 4\n", + "start a node 770 41\n", + "start a node 769 35\n", + "start a node 769 6\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 767 1\n", + "start a node 768 3\n", + "start a node 771 26\n", + "start a node 770 21\n", + "start a node 769 13\n", + "start a node 768 11\n", + "start a node 768 2\n", + "start a node 769 8\n", + "start a node 768 7\n", + "start a node 768 1\n", + "start a node 770 5\n", + "start a node 772 10\n", + "start a node 771 2\n", + "start a node 771 8\n", + "start a node 774 112\n", + "start a node 773 105\n", + "start a node 772 96\n", + "start a node 771 93\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 9\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 5\n", + "start a node 770 1\n", + "start a node 770 4\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 776 155\n", + "start a node 775 133\n", + "start a node 774 79\n", + "start a node 773 66\n", + "start a node 772 42\n", + "start a node 771 9\n", + "start a node 770 5\n", + "start a node 769 4\n", + "start a node 769 1\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 771 33\n", + "start a node 770 32\n", + "start a node 769 31\n", + "start a node 768 30\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 772 24\n", + "start a node 771 20\n", + "start a node 770 12\n", + "start a node 769 8\n", + "start a node 769 4\n", + "start a node 770 8\n", + "start a node 769 5\n", + "start a node 769 3\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 773 13\n", + "start a node 772 11\n", + "start a node 771 10\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 54\n", + "start a node 773 48\n", + "start a node 772 46\n", + "start a node 771 45\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 22\n", + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 774 10\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 777 253\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 776 204\n", + "start a node 775 169\n", + "start a node 774 115\n", + "start a node 773 98\n", + "start a node 772 96\n", + "start a node 772 2\n", + "start a node 773 17\n", + "start a node 772 10\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 771 5\n", + "start a node 772 7\n", + "start a node 771 6\n", + "start a node 771 1\n", + "start a node 774 54\n", + "start a node 773 18\n", + "start a node 772 11\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 771 6\n", + "start a node 770 4\n", + "start a node 770 2\n", + "start a node 772 7\n", + "start a node 773 36\n", + "start a node 772 28\n", + "start a node 771 18\n", + "start a node 770 1\n", + "start a node 770 17\n", + "start a node 771 10\n", + "start a node 770 5\n", + "start a node 770 5\n", + "start a node 772 8\n", + "start a node 771 6\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 775 35\n", + "start a node 774 19\n", + "start a node 773 8\n", + "start a node 772 1\n", + "start a node 772 7\n", + "start a node 773 11\n", + "start a node 772 10\n", + "start a node 772 1\n", + "start a node 774 16\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 772 2\n", + "start a node 773 6\n", + "start a node 776 49\n", + "start a node 775 38\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 774 30\n", + "start a node 775 11\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 774 6\n", + "start a node 773 5\n", + "start a node 773 1\n", + "start a node 778 1289\n", + "start a node 777 702\n", + "start a node 776 606\n", + "start a node 775 529\n", + "start a node 774 510\n", + "start a node 774 19\n", + "start a node 773 12\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 7\n", + "start a node 773 7\n", + "start a node 772 5\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 77\n", + "start a node 774 43\n", + "start a node 773 15\n", + "start a node 772 11\n", + "start a node 771 10\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 773 28\n", + "start a node 772 24\n", + "start a node 771 23\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 774 34\n", + "start a node 773 22\n", + "start a node 772 21\n", + "start a node 772 1\n", + "start a node 773 12\n", + "start a node 772 8\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 776 96\n", + "start a node 775 41\n", + "start a node 774 30\n", + "start a node 773 15\n", + "start a node 772 8\n", + "start a node 771 5\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 771 2\n", + "start a node 773 15\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 771 2\n", + "start a node 772 10\n", + "start a node 771 8\n", + "start a node 771 2\n", + "start a node 774 11\n", + "start a node 773 6\n", + "start a node 772 2\n", + "start a node 772 4\n", + "start a node 773 5\n", + "start a node 775 55\n", + "start a node 774 52\n", + "start a node 774 3\n", + "start a node 777 587\n", + "start a node 776 430\n", + "start a node 775 128\n", + "start a node 774 96\n", + "start a node 773 81\n", + "start a node 772 67\n", + "start a node 771 27\n", + "start a node 770 26\n", + "start a node 770 1\n", + "start a node 771 40\n", + "start a node 770 21\n", + "start a node 769 10\n", + "start a node 768 9\n", + "start a node 768 1\n", + "start a node 769 11\n", + "start a node 768 10\n", + "start a node 767 1\n", + "start a node 767 9\n", + "start a node 768 1\n", + "start a node 770 19\n", + "start a node 769 18\n", + "start a node 769 1\n", + "start a node 772 14\n", + "start a node 771 7\n", + "start a node 770 5\n", + "start a node 770 2\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 773 15\n", + "start a node 772 10\n", + "start a node 771 8\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 774 32\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 28\n", + "start a node 772 24\n", + "start a node 771 23\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 775 302\n", + "start a node 774 294\n", + "start a node 773 270\n", + "start a node 773 24\n", + "start a node 772 16\n", + "start a node 771 12\n", + "start a node 770 1\n", + "start a node 770 11\n", + "start a node 771 4\n", + "start a node 772 8\n", + "start a node 771 2\n", + "start a node 771 6\n", + "start a node 774 8\n", + "start a node 773 7\n", + "start a node 773 1\n", + "start a node 776 157\n", + "start a node 775 69\n", + "start a node 774 25\n", + "start a node 773 9\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 773 16\n", + "start a node 772 10\n", + "start a node 771 8\n", + "start a node 771 2\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 774 44\n", + "start a node 773 32\n", + "start a node 772 15\n", + "start a node 771 9\n", + "start a node 770 6\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 771 6\n", + "start a node 772 17\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 14\n", + "start a node 773 12\n", + "start a node 772 9\n", + "start a node 772 3\n", + "start a node 775 88\n", + "start a node 780 7364\n", + "start a node 779 4163\n", + "start a node 778 3500\n", + "start a node 777 2642\n", + "start a node 776 2442\n", + "start a node 776 200\n", + "start a node 775 145\n", + "start a node 774 103\n", + "start a node 773 47\n", + "start a node 772 40\n", + "start a node 771 34\n", + "start a node 770 31\n", + "start a node 769 27\n", + "start a node 768 26\n", + "start a node 767 3\n", + "start a node 766 1\n", + "start a node 766 2\n", + "start a node 767 23\n", + "start a node 768 1\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 770 3\n", + "start a node 771 6\n", + "start a node 770 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 7\n", + "start a node 773 56\n", + "start a node 772 48\n", + "start a node 771 27\n", + "start a node 770 19\n", + "start a node 769 16\n", + "start a node 768 15\n", + "start a node 768 1\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 770 8\n", + "start a node 769 7\n", + "start a node 769 1\n", + "start a node 771 21\n", + "start a node 770 17\n", + "start a node 769 11\n", + "start a node 769 6\n", + "start a node 768 3\n", + "start a node 767 1\n", + "start a node 767 2\n", + "start a node 768 3\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 772 8\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 774 42\n", + "start a node 773 25\n", + "start a node 772 20\n", + "start a node 771 17\n", + "start a node 770 16\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 773 17\n", + "start a node 772 15\n", + "start a node 771 10\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 770 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 55\n", + "start a node 774 52\n", + "start a node 773 51\n", + "start a node 772 50\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 777 858\n", + "start a node 776 555\n", + "start a node 775 476\n", + "start a node 774 412\n", + "start a node 773 392\n", + "start a node 773 20\n", + "start a node 772 17\n", + "start a node 772 3\n", + "start a node 774 64\n", + "start a node 773 51\n", + "start a node 772 17\n", + "start a node 771 11\n", + "start a node 770 10\n", + "start a node 770 1\n", + "start a node 771 6\n", + "start a node 772 34\n", + "start a node 773 13\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 771 2\n", + "start a node 775 79\n", + "start a node 774 27\n", + "start a node 773 21\n", + "start a node 772 4\n", + "start a node 772 17\n", + "start a node 771 16\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 774 52\n", + "start a node 773 50\n", + "start a node 772 49\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 776 303\n", + "start a node 775 277\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 774 269\n", + "start a node 773 265\n", + "start a node 773 4\n", + "start a node 775 26\n", + "start a node 774 11\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 7\n", + "start a node 774 15\n", + "start a node 773 13\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 778 663\n", + "start a node 777 270\n", + "start a node 776 205\n", + "start a node 775 174\n", + "start a node 774 46\n", + "start a node 773 22\n", + "start a node 772 13\n", + "start a node 771 8\n", + "start a node 770 6\n", + "start a node 769 5\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 770 3\n", + "start a node 772 9\n", + "start a node 771 8\n", + "start a node 771 1\n", + "start a node 773 24\n", + "start a node 774 128\n", + "start a node 773 124\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 31\n", + "start a node 774 19\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 772 4\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 773 12\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 9\n", + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 776 65\n", + "start a node 775 25\n", + "start a node 774 18\n", + "start a node 773 8\n", + "start a node 772 7\n", + "start a node 772 1\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 7\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 775 40\n", + "start a node 774 21\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 17\n", + "start a node 772 13\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 774 19\n", + "start a node 773 16\n", + "start a node 772 15\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 777 393\n", + "start a node 776 187\n", + "start a node 775 119\n", + "start a node 774 104\n", + "start a node 773 67\n", + "start a node 772 26\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 771 19\n", + "start a node 770 12\n", + "start a node 769 4\n", + "start a node 769 8\n", + "start a node 768 2\n", + "start a node 768 6\n", + "start a node 770 7\n", + "start a node 769 6\n", + "start a node 769 1\n", + "start a node 772 41\n", + "start a node 771 35\n", + "start a node 770 23\n", + "start a node 769 20\n", + "start a node 768 18\n", + "start a node 767 17\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 769 3\n", + "start a node 770 12\n", + "start a node 769 7\n", + "start a node 769 5\n", + "start a node 768 3\n", + "start a node 767 1\n", + "start a node 767 2\n", + "start a node 768 2\n", + "start a node 771 6\n", + "start a node 773 37\n", + "start a node 772 33\n", + "start a node 771 29\n", + "start a node 770 23\n", + "start a node 770 6\n", + "start a node 769 2\n", + "start a node 769 4\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 774 15\n", + "start a node 773 11\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 773 4\n", + "start a node 775 68\n", + "start a node 774 63\n", + "start a node 773 57\n", + "start a node 772 56\n", + "start a node 772 1\n", + "start a node 773 6\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 773 2\n", + "start a node 776 206\n", + "start a node 775 105\n", + "start a node 774 80\n", + "start a node 773 33\n", + "start a node 772 20\n", + "start a node 771 17\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 13\n", + "start a node 771 11\n", + "start a node 771 2\n", + "start a node 773 47\n", + "start a node 772 45\n", + "start a node 771 43\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 25\n", + "start a node 773 24\n", + "start a node 773 1\n", + "start a node 775 101\n", + "start a node 774 94\n", + "start a node 773 83\n", + "start a node 772 81\n", + "start a node 772 2\n", + "start a node 773 11\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 771 3\n", + "start a node 772 5\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 779 3201\n", + "start a node 778 1010\n", + "start a node 777 782\n", + "start a node 776 576\n", + "start a node 775 445\n", + "start a node 774 241\n", + "start a node 773 187\n", + "start a node 772 177\n", + "start a node 771 129\n", + "start a node 770 68\n", + "start a node 769 55\n", + "start a node 768 51\n", + "start a node 767 19\n", + "start a node 766 13\n", + "start a node 765 10\n", + "start a node 765 3\n", + "start a node 764 2\n", + "start a node 764 1\n", + "start a node 766 6\n", + "start a node 767 32\n", + "start a node 766 30\n", + "start a node 766 2\n", + "start a node 768 4\n", + "start a node 767 3\n", + "start a node 767 1\n", + "start a node 769 13\n", + "start a node 768 10\n", + "start a node 767 8\n", + "start a node 767 2\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 766 1\n", + "start a node 766 1\n", + "start a node 767 1\n", + "start a node 770 61\n", + "start a node 769 39\n", + "start a node 768 5\n", + "start a node 767 3\n", + "start a node 767 2\n", + "start a node 766 1\n", + "start a node 766 1\n", + "start a node 768 34\n", + "start a node 767 33\n", + "start a node 766 3\n", + "start a node 765 1\n", + "start a node 765 2\n", + "start a node 766 30\n", + "start a node 767 1\n", + "start a node 769 22\n", + "start a node 768 6\n", + "start a node 767 1\n", + "start a node 767 5\n", + "start a node 768 16\n", + "start a node 767 9\n", + "start a node 766 7\n", + "start a node 766 2\n", + "start a node 767 7\n", + "start a node 766 6\n", + "start a node 766 1\n", + "start a node 771 48\n", + "start a node 770 45\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 772 10\n", + "start a node 771 9\n", + "start a node 771 1\n", + "start a node 773 54\n", + "start a node 772 24\n", + "start a node 771 7\n", + "start a node 771 17\n", + "start a node 770 6\n", + "start a node 769 5\n", + "start a node 768 4\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 770 11\n", + "start a node 769 9\n", + "start a node 768 8\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 772 30\n", + "start a node 771 23\n", + "start a node 771 7\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 770 4\n", + "start a node 774 204\n", + "start a node 773 195\n", + "start a node 773 9\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 5\n", + "start a node 775 131\n", + "start a node 774 74\n", + "start a node 773 23\n", + "start a node 772 9\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 770 2\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 772 14\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 12\n", + "start a node 770 11\n", + "start a node 770 1\n", + "start a node 773 51\n", + "start a node 772 26\n", + "start a node 771 23\n", + "start a node 770 11\n", + "start a node 769 7\n", + "start a node 768 1\n", + "start a node 768 6\n", + "start a node 769 4\n", + "start a node 770 12\n", + "start a node 769 8\n", + "start a node 769 4\n", + "start a node 768 1\n", + "start a node 768 3\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 25\n", + "start a node 771 3\n", + "start a node 771 22\n", + "start a node 770 21\n", + "start a node 770 1\n", + "start a node 774 57\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 50\n", + "start a node 772 27\n", + "start a node 772 23\n", + "start a node 771 14\n", + "start a node 770 13\n", + "start a node 770 1\n", + "start a node 771 9\n", + "start a node 770 1\n", + "start a node 770 8\n", + "start a node 776 206\n", + "start a node 775 175\n", + "start a node 774 75\n", + "start a node 773 48\n", + "start a node 772 22\n", + "start a node 771 19\n", + "start a node 770 18\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 772 26\n", + "start a node 771 23\n", + "start a node 770 22\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 773 27\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 23\n", + "start a node 774 100\n", + "start a node 773 90\n", + "start a node 772 85\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 773 10\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 775 31\n", + "start a node 774 24\n", + "start a node 773 22\n", + "start a node 772 21\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 7\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 777 228\n", + "start a node 776 98\n", + "start a node 775 58\n", + "start a node 774 40\n", + "start a node 773 22\n", + "start a node 772 16\n", + "start a node 771 15\n", + "start a node 770 14\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 6\n", + "start a node 771 4\n", + "start a node 771 2\n", + "start a node 773 18\n", + "start a node 772 14\n", + "start a node 771 12\n", + "start a node 770 11\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 774 18\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 773 12\n", + "start a node 772 5\n", + "start a node 772 7\n", + "start a node 771 1\n", + "start a node 771 6\n", + "start a node 775 40\n", + "start a node 774 15\n", + "start a node 773 12\n", + "start a node 772 10\n", + "start a node 772 2\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 774 25\n", + "start a node 776 130\n", + "start a node 775 110\n", + "start a node 774 105\n", + "start a node 773 101\n", + "start a node 772 98\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 775 20\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 774 12\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 773 7\n", + "start a node 774 8\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 778 2191\n", + "start a node 777 1960\n", + "start a node 776 796\n", + "start a node 775 569\n", + "start a node 774 377\n", + "start a node 773 245\n", + "start a node 772 211\n", + "start a node 771 180\n", + "start a node 770 39\n", + "start a node 769 31\n", + "start a node 768 16\n", + "start a node 767 9\n", + "start a node 766 5\n", + "start a node 765 3\n", + "start a node 764 2\n", + "start a node 764 1\n", + "start a node 765 2\n", + "start a node 766 4\n", + "start a node 765 3\n", + "start a node 765 1\n", + "start a node 767 7\n", + "start a node 766 6\n", + "start a node 766 1\n", + "start a node 768 15\n", + "start a node 767 13\n", + "start a node 767 2\n", + "start a node 766 1\n", + "start a node 766 1\n", + "start a node 769 8\n", + "start a node 770 141\n", + "start a node 769 23\n", + "start a node 768 8\n", + "start a node 767 2\n", + "start a node 767 6\n", + "start a node 768 15\n", + "start a node 767 13\n", + "start a node 767 2\n", + "start a node 769 118\n", + "start a node 768 65\n", + "start a node 767 4\n", + "start a node 766 2\n", + "start a node 765 1\n", + "start a node 765 1\n", + "start a node 766 2\n", + "start a node 767 61\n", + "start a node 768 53\n", + "start a node 767 17\n", + "start a node 766 11\n", + "start a node 765 6\n", + "start a node 764 1\n", + "start a node 764 5\n", + "start a node 765 5\n", + "start a node 764 2\n", + "start a node 764 3\n", + "start a node 766 6\n", + "start a node 765 5\n", + "start a node 765 1\n", + "start a node 767 36\n", + "start a node 766 4\n", + "start a node 765 2\n", + "start a node 765 2\n", + "start a node 766 32\n", + "start a node 765 31\n", + "start a node 765 1\n", + "start a node 771 31\n", + "start a node 770 28\n", + "start a node 769 26\n", + "start a node 769 2\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 772 34\n", + "start a node 771 33\n", + "start a node 771 1\n", + "start a node 773 132\n", + "start a node 772 127\n", + "start a node 771 123\n", + "start a node 771 4\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 774 192\n", + "start a node 773 165\n", + "start a node 772 24\n", + "start a node 771 12\n", + "start a node 771 12\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 770 8\n", + "start a node 772 141\n", + "start a node 773 27\n", + "start a node 772 15\n", + "start a node 772 12\n", + "start a node 771 10\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 775 227\n", + "start a node 774 208\n", + "start a node 773 52\n", + "start a node 772 49\n", + "start a node 771 13\n", + "start a node 770 6\n", + "start a node 770 7\n", + "start a node 769 4\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 771 36\n", + "start a node 772 3\n", + "start a node 773 156\n", + "start a node 772 51\n", + "start a node 771 47\n", + "start a node 770 17\n", + "start a node 769 10\n", + "start a node 769 7\n", + "start a node 768 3\n", + "start a node 768 4\n", + "start a node 767 3\n", + "start a node 767 1\n", + "start a node 770 30\n", + "start a node 769 26\n", + "start a node 768 1\n", + "start a node 768 25\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 772 105\n", + "start a node 771 96\n", + "start a node 770 92\n", + "start a node 769 11\n", + "start a node 768 8\n", + "start a node 767 7\n", + "start a node 767 1\n", + "start a node 768 3\n", + "start a node 769 81\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 771 9\n", + "start a node 770 7\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 774 19\n", + "start a node 773 1\n", + "start a node 773 18\n", + "start a node 776 1164\n", + "start a node 777 231\n", + "start a node 776 161\n", + "start a node 775 116\n", + "start a node 774 98\n", + "start a node 773 92\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 18\n", + "start a node 773 13\n", + "start a node 772 9\n", + "start a node 771 2\n", + "start a node 771 7\n", + "start a node 772 4\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 45\n", + "start a node 774 33\n", + "start a node 773 27\n", + "start a node 772 24\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 21\n", + "start a node 770 1\n", + "start a node 770 20\n", + "start a node 772 3\n", + "start a node 773 6\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 774 12\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 7\n", + "start a node 776 70\n", + "start a node 775 35\n", + "start a node 774 11\n", + "start a node 773 10\n", + "start a node 773 1\n", + "start a node 774 24\n", + "start a node 773 18\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 16\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 35\n", + "start a node 774 30\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 781 5238\n", + "start a node 780 3653\n", + "start a node 779 3098\n", + "start a node 778 2709\n", + "start a node 777 2502\n", + "start a node 776 2419\n", + "start a node 776 83\n", + "start a node 775 65\n", + "start a node 774 57\n", + "start a node 773 40\n", + "start a node 772 35\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 771 2\n", + "start a node 773 17\n", + "start a node 772 13\n", + "start a node 771 10\n", + "start a node 770 8\n", + "start a node 770 2\n", + "start a node 771 3\n", + "start a node 772 4\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 18\n", + "start a node 774 12\n", + "start a node 773 10\n", + "start a node 772 9\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 6\n", + "start a node 777 207\n", + "start a node 776 134\n", + "start a node 775 111\n", + "start a node 774 97\n", + "start a node 773 88\n", + "start a node 772 86\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 9\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 774 14\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 775 23\n", + "start a node 774 20\n", + "start a node 773 18\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 3\n", + "start a node 776 73\n", + "start a node 775 39\n", + "start a node 774 29\n", + "start a node 773 11\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 771 3\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 773 18\n", + "start a node 772 17\n", + "start a node 772 1\n", + "start a node 774 10\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 775 34\n", + "start a node 774 16\n", + "start a node 773 12\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 18\n", + "start a node 773 15\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 772 10\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 778 389\n", + "start a node 777 163\n", + "start a node 776 89\n", + "start a node 775 45\n", + "start a node 774 30\n", + "start a node 773 11\n", + "start a node 772 9\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 773 19\n", + "start a node 772 18\n", + "start a node 772 1\n", + "start a node 774 15\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 773 10\n", + "start a node 772 7\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 775 44\n", + "start a node 774 6\n", + "start a node 773 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 38\n", + "start a node 773 22\n", + "start a node 772 10\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 6\n", + "start a node 770 5\n", + "start a node 770 1\n", + "start a node 772 12\n", + "start a node 771 9\n", + "start a node 770 7\n", + "start a node 770 2\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 773 16\n", + "start a node 776 74\n", + "start a node 775 52\n", + "start a node 774 22\n", + "start a node 773 14\n", + "start a node 772 8\n", + "start a node 771 2\n", + "start a node 771 6\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 773 8\n", + "start a node 772 7\n", + "start a node 772 1\n", + "start a node 774 30\n", + "start a node 773 29\n", + "start a node 772 1\n", + "start a node 772 28\n", + "start a node 773 1\n", + "start a node 775 22\n", + "start a node 774 18\n", + "start a node 773 13\n", + "start a node 772 8\n", + "start a node 772 5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 777 226\n", + "start a node 776 178\n", + "start a node 775 165\n", + "start a node 774 152\n", + "start a node 773 145\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 774 13\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 775 13\n", + "start a node 774 10\n", + "start a node 773 9\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 776 48\n", + "start a node 775 21\n", + "start a node 774 14\n", + "start a node 773 12\n", + "start a node 773 2\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 775 27\n", + "start a node 774 13\n", + "start a node 773 1\n", + "start a node 773 12\n", + "start a node 774 14\n", + "start a node 773 12\n", + "start a node 772 11\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 779 555\n", + "start a node 778 284\n", + "start a node 777 198\n", + "start a node 776 161\n", + "start a node 775 149\n", + "start a node 774 42\n", + "start a node 773 36\n", + "start a node 772 33\n", + "start a node 771 31\n", + "start a node 770 30\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 3\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 107\n", + "start a node 775 12\n", + "start a node 774 6\n", + "start a node 774 6\n", + "start a node 773 5\n", + "start a node 773 1\n", + "start a node 776 37\n", + "start a node 775 26\n", + "start a node 774 16\n", + "start a node 773 5\n", + "start a node 773 11\n", + "start a node 772 8\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 10\n", + "start a node 773 5\n", + "start a node 772 1\n", + "start a node 772 4\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 775 11\n", + "start a node 774 9\n", + "start a node 773 8\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 777 86\n", + "start a node 776 45\n", + "start a node 775 34\n", + "start a node 774 27\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 772 5\n", + "start a node 773 19\n", + "start a node 774 7\n", + "start a node 773 3\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 775 11\n", + "start a node 776 41\n", + "start a node 775 12\n", + "start a node 774 6\n", + "start a node 773 4\n", + "start a node 773 2\n", + "start a node 774 6\n", + "start a node 773 4\n", + "start a node 773 2\n", + "start a node 775 29\n", + "start a node 774 21\n", + "start a node 773 11\n", + "start a node 772 6\n", + "start a node 771 4\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 771 1\n", + "start a node 771 7\n", + "start a node 772 2\n", + "start a node 774 8\n", + "start a node 773 6\n", + "start a node 773 2\n", + "start a node 778 271\n", + "start a node 777 80\n", + "start a node 776 63\n", + "start a node 775 40\n", + "start a node 774 17\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 772 3\n", + "start a node 773 10\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 772 6\n", + "start a node 774 23\n", + "start a node 773 21\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 775 23\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 774 20\n", + "start a node 773 19\n", + "start a node 773 1\n", + "start a node 776 17\n", + "start a node 775 2\n", + "start a node 774 1\n", + "start a node 774 1\n", + "start a node 775 15\n", + "start a node 777 191\n", + "start a node 776 19\n", + "start a node 775 13\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 11\n", + "start a node 773 9\n", + "start a node 772 8\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 775 6\n", + "start a node 776 172\n", + "start a node 775 46\n", + "start a node 774 39\n", + "start a node 773 35\n", + "start a node 772 34\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 775 126\n", + "start a node 780 1585\n", + "start a node 779 772\n", + "start a node 778 565\n", + "start a node 777 541\n", + "start a node 776 105\n", + "start a node 775 80\n", + "start a node 774 68\n", + "start a node 773 64\n", + "start a node 772 59\n", + "start a node 771 12\n", + "start a node 770 8\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 771 47\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 12\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 775 25\n", + "start a node 774 13\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 774 12\n", + "start a node 773 8\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 776 436\n", + "start a node 777 24\n", + "start a node 776 15\n", + "start a node 775 9\n", + "start a node 774 8\n", + "start a node 774 1\n", + "start a node 775 6\n", + "start a node 774 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 776 9\n", + "start a node 775 5\n", + "start a node 774 2\n", + "start a node 774 3\n", + "start a node 775 4\n", + "start a node 778 207\n", + "start a node 777 149\n", + "start a node 776 46\n", + "start a node 775 40\n", + "start a node 774 13\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 774 27\n", + "start a node 773 23\n", + "start a node 772 22\n", + "start a node 771 21\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 775 6\n", + "start a node 776 103\n", + "start a node 775 35\n", + "start a node 774 15\n", + "start a node 773 9\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 20\n", + "start a node 775 68\n", + "start a node 774 54\n", + "start a node 773 23\n", + "start a node 772 13\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 9\n", + "start a node 772 10\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 773 31\n", + "start a node 772 30\n", + "start a node 772 1\n", + "start a node 774 14\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 771 5\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 777 58\n", + "start a node 776 36\n", + "start a node 775 7\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 773 2\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 775 29\n", + "start a node 774 26\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 776 22\n", + "start a node 775 15\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 774 12\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 779 813\n", + "start a node 778 556\n", + "start a node 777 366\n", + "start a node 776 239\n", + "start a node 775 132\n", + "start a node 774 90\n", + "start a node 773 36\n", + "start a node 772 24\n", + "start a node 771 20\n", + "start a node 770 1\n", + "start a node 770 19\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 772 12\n", + "start a node 771 10\n", + "start a node 770 9\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 773 54\n", + "start a node 772 44\n", + "start a node 771 28\n", + "start a node 770 19\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 768 2\n", + "start a node 769 15\n", + "start a node 768 13\n", + "start a node 767 12\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 770 9\n", + "start a node 771 16\n", + "start a node 772 10\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 7\n", + "start a node 774 42\n", + "start a node 773 29\n", + "start a node 772 19\n", + "start a node 771 11\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 770 8\n", + "start a node 771 8\n", + "start a node 770 6\n", + "start a node 770 2\n", + "start a node 772 10\n", + "start a node 771 3\n", + "start a node 771 7\n", + "start a node 770 5\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 773 13\n", + "start a node 772 12\n", + "start a node 772 1\n", + "start a node 775 107\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 772 3\n", + "start a node 774 95\n", + "start a node 776 127\n", + "start a node 775 55\n", + "start a node 774 37\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 33\n", + "start a node 774 18\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 773 10\n", + "start a node 772 5\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 775 72\n", + "start a node 774 29\n", + "start a node 773 16\n", + "start a node 772 9\n", + "start a node 771 8\n", + "start a node 771 1\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 773 13\n", + "start a node 772 10\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 8\n", + "start a node 772 3\n", + "start a node 774 43\n", + "start a node 773 36\n", + "start a node 772 35\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 777 190\n", + "start a node 776 163\n", + "start a node 775 77\n", + "start a node 774 11\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 773 5\n", + "start a node 774 66\n", + "start a node 773 62\n", + "start a node 772 60\n", + "start a node 771 57\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 773 4\n", + "start a node 775 86\n", + "start a node 776 27\n", + "start a node 775 10\n", + "start a node 774 9\n", + "start a node 774 1\n", + "start a node 775 17\n", + "start a node 774 11\n", + "start a node 773 9\n", + "start a node 773 2\n", + "start a node 774 6\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 778 257\n", + "start a node 777 209\n", + "start a node 776 165\n", + "start a node 775 36\n", + "start a node 774 6\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 774 30\n", + "start a node 773 25\n", + "start a node 772 22\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 775 129\n", + "start a node 776 44\n", + "start a node 775 28\n", + "start a node 774 13\n", + "start a node 773 8\n", + "start a node 772 7\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 15\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 773 9\n", + "start a node 772 1\n", + "start a node 772 8\n", + "start a node 775 16\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 14\n", + "start a node 777 48\n", + "start a node 776 34\n", + "start a node 775 26\n", + "start a node 774 24\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 8\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 773 2\n", + "start a node 774 3\n", + "start a node 776 14\n", + "start a node 775 8\n", + "start a node 774 3\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 774 3\n", + "start a node 782 9649\n", + "start a node 781 5875\n", + "start a node 780 2790\n", + "start a node 779 1642\n", + "start a node 778 1334\n", + "start a node 777 711\n", + "start a node 776 558\n", + "start a node 775 195\n", + "start a node 774 156\n", + "start a node 773 126\n", + "start a node 772 98\n", + "start a node 771 65\n", + "start a node 770 42\n", + "start a node 769 27\n", + "start a node 768 21\n", + "start a node 767 19\n", + "start a node 766 16\n", + "start a node 766 3\n", + "start a node 765 2\n", + "start a node 764 1\n", + "start a node 764 1\n", + "start a node 765 1\n", + "start a node 767 2\n", + "start a node 768 6\n", + "start a node 767 1\n", + "start a node 767 5\n", + "start a node 769 15\n", + "start a node 768 10\n", + "start a node 767 8\n", + "start a node 766 7\n", + "start a node 766 1\n", + "start a node 767 2\n", + "start a node 768 5\n", + "start a node 767 2\n", + "start a node 767 3\n", + "start a node 766 2\n", + "start a node 766 1\n", + "start a node 770 23\n", + "start a node 769 20\n", + "start a node 768 18\n", + "start a node 767 17\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 3\n", + "start a node 771 33\n", + "start a node 770 26\n", + "start a node 769 12\n", + "start a node 769 14\n", + "start a node 768 9\n", + "start a node 768 5\n", + "start a node 770 7\n", + "start a node 769 5\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 772 28\n", + "start a node 771 22\n", + "start a node 770 20\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 771 6\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 773 30\n", + "start a node 772 29\n", + "start a node 772 1\n", + "start a node 774 39\n", + "start a node 773 18\n", + "start a node 772 10\n", + "start a node 771 4\n", + "start a node 771 6\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 773 21\n", + "start a node 775 363\n", + "start a node 774 337\n", + "start a node 774 26\n", + "start a node 773 19\n", + "start a node 772 8\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 772 11\n", + "start a node 771 7\n", + "start a node 771 4\n", + "start a node 773 7\n", + "start a node 772 5\n", + "start a node 772 2\n", + "start a node 776 153\n", + "start a node 775 112\n", + "start a node 774 107\n", + "start a node 773 99\n", + "start a node 772 83\n", + "start a node 772 16\n", + "start a node 771 13\n", + "start a node 770 12\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 775 41\n", + "start a node 774 20\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 16\n", + "start a node 772 2\n", + "start a node 772 14\n", + "start a node 774 21\n", + "start a node 773 19\n", + "start a node 772 18\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 777 623\n", + "start a node 776 350\n", + "start a node 775 235\n", + "start a node 774 200\n", + "start a node 774 35\n", + "start a node 773 30\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 26\n", + "start a node 773 5\n", + "start a node 775 115\n", + "start a node 774 62\n", + "start a node 773 52\n", + "start a node 772 45\n", + "start a node 771 40\n", + "start a node 770 37\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 771 5\n", + "start a node 770 4\n", + "start a node 770 1\n", + "start a node 772 7\n", + "start a node 771 1\n", + "start a node 771 6\n", + "start a node 773 10\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 774 53\n", + "start a node 773 50\n", + "start a node 772 45\n", + "start a node 771 43\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 776 273\n", + "start a node 775 139\n", + "start a node 774 113\n", + "start a node 773 88\n", + "start a node 772 77\n", + "start a node 771 71\n", + "start a node 770 47\n", + "start a node 769 46\n", + "start a node 769 1\n", + "start a node 770 24\n", + "start a node 769 20\n", + "start a node 768 8\n", + "start a node 767 4\n", + "start a node 767 4\n", + "start a node 768 12\n", + "start a node 769 4\n", + "start a node 771 6\n", + "start a node 772 11\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 771 7\n", + "start a node 770 5\n", + "start a node 770 2\n", + "start a node 773 25\n", + "start a node 772 20\n", + "start a node 771 18\n", + "start a node 770 17\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 774 26\n", + "start a node 773 19\n", + "start a node 772 17\n", + "start a node 771 16\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 7\n", + "start a node 772 5\n", + "start a node 772 2\n", + "start a node 775 134\n", + "start a node 778 308\n", + "start a node 777 287\n", + "start a node 776 283\n", + "start a node 776 4\n", + "start a node 777 21\n", + "start a node 776 12\n", + "start a node 775 6\n", + "start a node 775 6\n", + "start a node 774 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 776 9\n", + "start a node 775 4\n", + "start a node 774 1\n", + "start a node 774 3\n", + "start a node 775 5\n", + "start a node 774 3\n", + "start a node 774 2\n", + "start a node 779 1148\n", + "start a node 778 407\n", + "start a node 777 71\n", + "start a node 776 57\n", + "start a node 775 50\n", + "start a node 774 39\n", + "start a node 773 38\n", + "start a node 773 1\n", + "start a node 774 11\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 775 7\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 774 5\n", + "start a node 773 1\n", + "start a node 773 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 776 14\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 3\n", + "start a node 775 8\n", + "start a node 774 7\n", + "start a node 774 1\n", + "start a node 777 336\n", + "start a node 776 192\n", + "start a node 775 149\n", + "start a node 774 136\n", + "start a node 773 128\n", + "start a node 772 105\n", + "start a node 771 96\n", + "start a node 771 9\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 770 5\n", + "start a node 772 23\n", + "start a node 771 21\n", + "start a node 770 11\n", + "start a node 769 7\n", + "start a node 768 2\n", + "start a node 768 5\n", + "start a node 769 4\n", + "start a node 770 10\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 773 8\n", + "start a node 772 7\n", + "start a node 772 1\n", + "start a node 774 13\n", + "start a node 773 12\n", + "start a node 773 1\n", + "start a node 775 43\n", + "start a node 774 12\n", + "start a node 773 8\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 774 31\n", + "start a node 773 28\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 776 144\n", + "start a node 775 31\n", + "start a node 774 10\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 774 21\n", + "start a node 773 20\n", + "start a node 773 1\n", + "start a node 775 113\n", + "start a node 774 38\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 32\n", + "start a node 772 28\n", + "start a node 771 22\n", + "start a node 770 21\n", + "start a node 770 1\n", + "start a node 771 6\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 770 3\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 774 75\n", + "start a node 778 741\n", + "start a node 777 45\n", + "start a node 776 29\n", + "start a node 775 23\n", + "start a node 774 21\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 776 16\n", + "start a node 775 12\n", + "start a node 774 11\n", + "start a node 774 1\n", + "start a node 775 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 777 696\n", + "start a node 780 3085\n", + "start a node 779 2895\n", + "start a node 779 190\n", + "start a node 778 75\n", + "start a node 777 58\n", + "start a node 776 47\n", + "start a node 775 44\n", + "start a node 774 42\n", + "start a node 774 2\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 774 1\n", + "start a node 776 11\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 774 3\n", + "start a node 775 5\n", + "start a node 774 4\n", + "start a node 774 1\n", + "start a node 777 17\n", + "start a node 776 13\n", + "start a node 776 4\n", + "start a node 775 3\n", + "start a node 775 1\n", + "start a node 778 115\n", + "start a node 777 55\n", + "start a node 776 51\n", + "start a node 775 2\n", + "start a node 774 1\n", + "start a node 774 1\n", + "start a node 775 49\n", + "start a node 774 48\n", + "start a node 774 1\n", + "start a node 776 4\n", + "start a node 775 2\n", + "start a node 775 2\n", + "start a node 774 1\n", + "start a node 774 1\n", + "start a node 777 60\n", + "start a node 776 13\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 775 6\n", + "start a node 776 47\n", + "start a node 775 2\n", + "start a node 775 45\n", + "start a node 781 3774\n", + "start a node 780 2561\n", + "start a node 779 2191\n", + "start a node 778 2091\n", + "start a node 777 2014\n", + "start a node 777 77\n", + "start a node 776 46\n", + "start a node 775 12\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 775 34\n", + "start a node 774 29\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 776 31\n", + "start a node 775 16\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 12\n", + "start a node 775 15\n", + "start a node 774 11\n", + "start a node 773 10\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 773 2\n", + "start a node 778 100\n", + "start a node 777 61\n", + "start a node 776 23\n", + "start a node 775 14\n", + "start a node 775 9\n", + "start a node 774 6\n", + "start a node 774 3\n", + "start a node 776 38\n", + "start a node 775 28\n", + "start a node 774 26\n", + "start a node 773 25\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 10\n", + "start a node 774 6\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 777 39\n", + "start a node 776 6\n", + "start a node 775 2\n", + "start a node 775 4\n", + "start a node 776 33\n", + "start a node 779 370\n", + "start a node 778 226\n", + "start a node 777 87\n", + "start a node 776 66\n", + "start a node 775 59\n", + "start a node 774 55\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 773 2\n", + "start a node 776 21\n", + "start a node 775 13\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 774 9\n", + "start a node 773 8\n", + "start a node 773 1\n", + "start a node 775 8\n", + "start a node 774 1\n", + "start a node 774 7\n", + "start a node 777 139\n", + "start a node 776 60\n", + "start a node 775 26\n", + "start a node 774 6\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 774 20\n", + "start a node 773 1\n", + "start a node 773 19\n", + "start a node 775 34\n", + "start a node 774 13\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 772 3\n", + "start a node 774 21\n", + "start a node 773 17\n", + "start a node 773 4\n", + "start a node 776 79\n", + "start a node 778 144\n", + "start a node 777 125\n", + "start a node 776 104\n", + "start a node 776 21\n", + "start a node 775 8\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 775 13\n", + "start a node 774 12\n", + "start a node 774 1\n", + "start a node 777 19\n", + "start a node 776 10\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 774 1\n", + "start a node 775 7\n", + "start a node 776 9\n", + "start a node 775 4\n", + "start a node 774 3\n", + "start a node 774 1\n", + "start a node 775 5\n", + "start a node 774 3\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 780 1213\n", + "start a node 779 681\n", + "start a node 778 286\n", + "start a node 777 248\n", + "start a node 776 242\n", + "start a node 775 233\n", + "start a node 775 9\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 776 6\n", + "start a node 775 3\n", + "start a node 774 1\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 3\n", + "start a node 777 38\n", + "start a node 776 25\n", + "start a node 775 9\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 775 16\n", + "start a node 774 15\n", + "start a node 774 1\n", + "start a node 776 13\n", + "start a node 775 12\n", + "start a node 775 1\n", + "start a node 778 395\n", + "start a node 777 328\n", + "start a node 776 83\n", + "start a node 775 31\n", + "start a node 774 11\n", + "start a node 773 7\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 774 20\n", + "start a node 773 16\n", + "start a node 773 4\n", + "start a node 775 52\n", + "start a node 774 15\n", + "start a node 773 8\n", + "start a node 772 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 7\n", + "start a node 774 37\n", + "start a node 773 34\n", + "start a node 772 32\n", + "start a node 771 29\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 3\n", + "start a node 776 245\n", + "start a node 777 67\n", + "start a node 776 54\n", + "start a node 775 43\n", + "start a node 775 11\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 774 6\n", + "start a node 773 4\n", + "start a node 773 2\n", + "start a node 776 13\n", + "start a node 775 6\n", + "start a node 774 4\n", + "start a node 774 2\n", + "start a node 775 7\n", + "start a node 779 532\n", + "start a node 778 460\n", + "start a node 777 427\n", + "start a node 777 33\n", + "start a node 776 17\n", + "start a node 775 10\n", + "start a node 774 9\n", + "start a node 774 1\n", + "start a node 775 7\n", + "start a node 774 4\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 776 16\n", + "start a node 775 4\n", + "start a node 774 1\n", + "start a node 774 3\n", + "start a node 775 12\n", + "start a node 774 10\n", + "start a node 773 8\n", + "start a node 773 2\n", + "start a node 774 2\n", + "start a node 778 72\n", + "start a node 777 31\n", + "start a node 776 19\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 775 12\n", + "start a node 774 1\n", + "start a node 774 11\n", + "start a node 775 7\n", + "start a node 774 2\n", + "start a node 774 5\n", + "start a node 776 12\n", + "start a node 775 8\n", + "start a node 774 2\n", + "start a node 774 6\n", + "start a node 775 4\n", + "start a node 774 1\n", + "start a node 774 3\n", + "start a node 777 41\n", + "start a node 776 21\n", + "start a node 775 19\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 774 16\n", + "start a node 775 2\n", + "start a node 774 1\n", + "start a node 774 1\n", + "start a node 776 20\n", + "start a node 775 16\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 12\n", + "start a node 775 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 783 26413\n", + "start a node 782 15142\n", + "start a node 781 11780\n", + "start a node 780 6873\n", + "start a node 779 3386\n", + "start a node 778 2344\n", + "start a node 777 1339\n", + "start a node 776 1178\n", + "start a node 775 1089\n", + "start a node 774 789\n", + "start a node 773 706\n", + "start a node 772 658\n", + "start a node 772 48\n", + "start a node 771 30\n", + "start a node 770 12\n", + "start a node 769 7\n", + "start a node 769 5\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 3\n", + "start a node 770 18\n", + "start a node 769 16\n", + "start a node 768 15\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 771 18\n", + "start a node 770 6\n", + "start a node 769 2\n", + "start a node 769 4\n", + "start a node 770 12\n", + "start a node 769 11\n", + "start a node 769 1\n", + "start a node 773 83\n", + "start a node 772 61\n", + "start a node 771 54\n", + "start a node 770 31\n", + "start a node 769 23\n", + "start a node 768 18\n", + "start a node 767 15\n", + "start a node 767 3\n", + "start a node 768 5\n", + "start a node 767 1\n", + "start a node 767 4\n", + "start a node 769 8\n", + "start a node 768 6\n", + "start a node 768 2\n", + "start a node 770 23\n", + "start a node 771 7\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 772 22\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 771 15\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 770 11\n", + "start a node 774 300\n", + "start a node 773 217\n", + "start a node 772 166\n", + "start a node 771 61\n", + "start a node 770 49\n", + "start a node 769 42\n", + "start a node 768 36\n", + "start a node 767 33\n", + "start a node 766 30\n", + "start a node 766 3\n", + "start a node 765 2\n", + "start a node 764 1\n", + "start a node 764 1\n", + "start a node 765 1\n", + "start a node 767 3\n", + "start a node 766 2\n", + "start a node 765 1\n", + "start a node 765 1\n", + "start a node 766 1\n", + "start a node 768 6\n", + "start a node 769 7\n", + "start a node 768 5\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 770 12\n", + "start a node 769 1\n", + "start a node 769 11\n", + "start a node 771 105\n", + "start a node 772 51\n", + "start a node 771 34\n", + "start a node 770 25\n", + "start a node 769 24\n", + "start a node 769 1\n", + "start a node 770 9\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 7\n", + "start a node 771 17\n", + "start a node 770 14\n", + "start a node 770 3\n", + "start a node 773 83\n", + "start a node 772 25\n", + "start a node 771 17\n", + "start a node 770 15\n", + "start a node 770 2\n", + "start a node 771 8\n", + "start a node 770 5\n", + "start a node 769 4\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 772 58\n", + "start a node 775 89\n", + "start a node 774 34\n", + "start a node 773 9\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 773 25\n", + "start a node 772 22\n", + "start a node 771 21\n", + "start a node 770 20\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 55\n", + "start a node 773 43\n", + "start a node 772 42\n", + "start a node 771 41\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 12\n", + "start a node 772 10\n", + "start a node 771 9\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 776 161\n", + "start a node 775 132\n", + "start a node 774 41\n", + "start a node 773 35\n", + "start a node 772 18\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 770 2\n", + "start a node 771 13\n", + "start a node 770 10\n", + "start a node 769 9\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 772 17\n", + "start a node 771 16\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 774 91\n", + "start a node 773 88\n", + "start a node 772 71\n", + "start a node 772 17\n", + "start a node 771 7\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 771 10\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 775 29\n", + "start a node 774 21\n", + "start a node 773 19\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 777 1005\n", + "start a node 776 887\n", + "start a node 775 339\n", + "start a node 774 246\n", + "start a node 773 116\n", + "start a node 772 70\n", + "start a node 771 48\n", + "start a node 770 32\n", + "start a node 769 12\n", + "start a node 768 9\n", + "start a node 767 8\n", + "start a node 766 7\n", + "start a node 766 1\n", + "start a node 767 1\n", + "start a node 768 3\n", + "start a node 769 20\n", + "start a node 768 18\n", + "start a node 767 17\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 770 16\n", + "start a node 769 8\n", + "start a node 768 4\n", + "start a node 767 2\n", + "start a node 767 2\n", + "start a node 768 4\n", + "start a node 767 2\n", + "start a node 767 2\n", + "start a node 769 8\n", + "start a node 768 6\n", + "start a node 768 2\n", + "start a node 771 22\n", + "start a node 770 20\n", + "start a node 769 18\n", + "start a node 768 17\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 2\n", + "start a node 772 46\n", + "start a node 771 35\n", + "start a node 770 26\n", + "start a node 769 17\n", + "start a node 768 16\n", + "start a node 768 1\n", + "start a node 769 9\n", + "start a node 768 2\n", + "start a node 768 7\n", + "start a node 770 9\n", + "start a node 769 7\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 771 11\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 770 8\n", + "start a node 773 130\n", + "start a node 772 106\n", + "start a node 771 81\n", + "start a node 770 76\n", + "start a node 769 74\n", + "start a node 768 73\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 771 25\n", + "start a node 770 14\n", + "start a node 769 11\n", + "start a node 768 10\n", + "start a node 768 1\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 768 1\n", + "start a node 770 11\n", + "start a node 769 8\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 1\n", + "start a node 772 24\n", + "start a node 771 20\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 770 17\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 774 93\n", + "start a node 773 59\n", + "start a node 772 46\n", + "start a node 771 36\n", + "start a node 770 7\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 768 2\n", + "start a node 769 3\n", + "start a node 770 29\n", + "start a node 769 28\n", + "start a node 769 1\n", + "start a node 771 10\n", + "start a node 770 9\n", + "start a node 770 1\n", + "start a node 772 13\n", + "start a node 771 9\n", + "start a node 770 5\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 773 34\n", + "start a node 772 33\n", + "start a node 772 1\n", + "start a node 775 548\n", + "start a node 774 490\n", + "start a node 774 58\n", + "start a node 773 49\n", + "start a node 772 44\n", + "start a node 771 17\n", + "start a node 770 12\n", + "start a node 769 8\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 769 2\n", + "start a node 771 27\n", + "start a node 770 22\n", + "start a node 769 18\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 768 2\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 769 2\n", + "start a node 772 5\n", + "start a node 771 1\n", + "start a node 771 4\n", + "start a node 773 9\n", + "start a node 772 4\n", + "start a node 772 5\n", + "start a node 776 118\n", + "start a node 775 42\n", + "start a node 774 27\n", + "start a node 773 19\n", + "start a node 772 17\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 8\n", + "start a node 772 6\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 15\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 775 76\n", + "start a node 774 72\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 773 24\n", + "start a node 772 7\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 771 3\n", + "start a node 772 17\n", + "start a node 773 48\n", + "start a node 772 41\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 771 2\n", + "start a node 774 4\n", + "start a node 778 1042\n", + "start a node 777 865\n", + "start a node 776 793\n", + "start a node 775 750\n", + "start a node 774 733\n", + "start a node 774 17\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 773 12\n", + "start a node 772 10\n", + "start a node 771 9\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 43\n", + "start a node 774 23\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 773 15\n", + "start a node 772 9\n", + "start a node 771 5\n", + "start a node 770 4\n", + "start a node 770 1\n", + "start a node 771 4\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 774 20\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 18\n", + "start a node 772 16\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 776 72\n", + "start a node 775 33\n", + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 772 2\n", + "start a node 772 4\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 774 21\n", + "start a node 773 17\n", + "start a node 772 12\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 771 2\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 39\n", + "start a node 774 29\n", + "start a node 773 24\n", + "start a node 772 16\n", + "start a node 771 10\n", + "start a node 771 6\n", + "start a node 770 4\n", + "start a node 769 1\n", + "start a node 769 3\n", + "start a node 770 2\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 774 10\n", + "start a node 773 9\n", + "start a node 773 1\n", + "start a node 777 177\n", + "start a node 776 139\n", + "start a node 775 89\n", + "start a node 774 18\n", + "start a node 773 12\n", + "start a node 772 6\n", + "start a node 772 6\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 4\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 774 71\n", + "start a node 773 65\n", + "start a node 772 40\n", + "start a node 771 38\n", + "start a node 770 14\n", + "start a node 769 3\n", + "start a node 769 11\n", + "start a node 768 7\n", + "start a node 768 4\n", + "start a node 767 2\n", + "start a node 767 2\n", + "start a node 770 24\n", + "start a node 771 2\n", + "start a node 772 25\n", + "start a node 771 19\n", + "start a node 770 7\n", + "start a node 769 5\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 12\n", + "start a node 769 2\n", + "start a node 769 10\n", + "start a node 771 6\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 50\n", + "start a node 774 9\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 41\n", + "start a node 773 25\n", + "start a node 773 16\n", + "start a node 772 8\n", + "start a node 771 6\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 776 38\n", + "start a node 775 32\n", + "start a node 774 25\n", + "start a node 774 7\n", + "start a node 773 5\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 775 6\n", + "start a node 779 3487\n", + "start a node 778 3043\n", + "start a node 777 1237\n", + "start a node 776 930\n", + "start a node 775 755\n", + "start a node 774 678\n", + "start a node 773 643\n", + "start a node 772 620\n", + "start a node 772 23\n", + "start a node 771 21\n", + "start a node 770 18\n", + "start a node 769 17\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 773 35\n", + "start a node 772 21\n", + "start a node 771 14\n", + "start a node 771 7\n", + "start a node 770 4\n", + "start a node 770 3\n", + "start a node 772 14\n", + "start a node 771 11\n", + "start a node 770 2\n", + "start a node 770 9\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 7\n", + "start a node 771 3\n", + "start a node 774 77\n", + "start a node 773 44\n", + "start a node 772 31\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 27\n", + "start a node 770 26\n", + "start a node 770 1\n", + "start a node 772 13\n", + "start a node 771 11\n", + "start a node 770 10\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 773 33\n", + "start a node 772 19\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 770 2\n", + "start a node 771 14\n", + "start a node 770 5\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 3\n", + "start a node 770 9\n", + "start a node 769 8\n", + "start a node 769 1\n", + "start a node 772 14\n", + "start a node 771 12\n", + "start a node 771 2\n", + "start a node 775 175\n", + "start a node 774 156\n", + "start a node 773 122\n", + "start a node 772 115\n", + "start a node 771 99\n", + "start a node 770 89\n", + "start a node 769 85\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 770 10\n", + "start a node 769 6\n", + "start a node 768 5\n", + "start a node 768 1\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 768 2\n", + "start a node 771 16\n", + "start a node 770 9\n", + "start a node 769 6\n", + "start a node 769 3\n", + "start a node 770 7\n", + "start a node 769 1\n", + "start a node 769 6\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 771 2\n", + "start a node 773 34\n", + "start a node 772 19\n", + "start a node 771 10\n", + "start a node 770 7\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 771 9\n", + "start a node 770 4\n", + "start a node 770 5\n", + "start a node 769 2\n", + "start a node 769 3\n", + "start a node 772 15\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 770 2\n", + "start a node 771 11\n", + "start a node 774 19\n", + "start a node 773 13\n", + "start a node 772 12\n", + "start a node 772 1\n", + "start a node 773 6\n", + "start a node 776 307\n", + "start a node 775 259\n", + "start a node 774 251\n", + "start a node 774 8\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 775 48\n", + "start a node 774 31\n", + "start a node 773 23\n", + "start a node 772 19\n", + "start a node 771 1\n", + "start a node 771 18\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 773 8\n", + "start a node 772 2\n", + "start a node 772 6\n", + "start a node 774 17\n", + "start a node 773 9\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 777 1806\n", + "start a node 776 1531\n", + "start a node 775 1421\n", + "start a node 774 1349\n", + "start a node 774 72\n", + "start a node 773 25\n", + "start a node 772 16\n", + "start a node 771 13\n", + "start a node 770 8\n", + "start a node 769 7\n", + "start a node 769 1\n", + "start a node 770 5\n", + "start a node 771 3\n", + "start a node 772 9\n", + "start a node 771 5\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 773 47\n", + "start a node 772 33\n", + "start a node 771 20\n", + "start a node 770 9\n", + "start a node 769 6\n", + "start a node 769 3\n", + "start a node 770 11\n", + "start a node 769 3\n", + "start a node 769 8\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 6\n", + "start a node 771 13\n", + "start a node 770 11\n", + "start a node 770 2\n", + "start a node 772 14\n", + "start a node 771 9\n", + "start a node 770 4\n", + "start a node 770 5\n", + "start a node 769 4\n", + "start a node 769 1\n", + "start a node 771 5\n", + "start a node 770 4\n", + "start a node 770 1\n", + "start a node 775 110\n", + "start a node 774 90\n", + "start a node 773 77\n", + "start a node 772 74\n", + "start a node 771 71\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 772 3\n", + "start a node 773 13\n", + "start a node 772 10\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 774 20\n", + "start a node 773 16\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 776 275\n", + "start a node 775 212\n", + "start a node 774 205\n", + "start a node 773 189\n", + "start a node 773 16\n", + "start a node 772 12\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 770 3\n", + "start a node 771 7\n", + "start a node 770 5\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 4\n", + "start a node 774 7\n", + "start a node 773 6\n", + "start a node 773 1\n", + "start a node 775 63\n", + "start a node 774 43\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 772 2\n", + "start a node 773 37\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 772 33\n", + "start a node 771 32\n", + "start a node 771 1\n", + "start a node 774 20\n", + "start a node 773 18\n", + "start a node 773 2\n", + "start a node 778 444\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 777 327\n", + "start a node 776 291\n", + "start a node 775 160\n", + "start a node 774 48\n", + "start a node 773 41\n", + "start a node 772 35\n", + "start a node 771 30\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 770 2\n", + "start a node 772 6\n", + "start a node 771 4\n", + "start a node 771 2\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 112\n", + "start a node 773 84\n", + "start a node 772 76\n", + "start a node 771 72\n", + "start a node 770 31\n", + "start a node 769 15\n", + "start a node 769 16\n", + "start a node 768 9\n", + "start a node 767 1\n", + "start a node 767 8\n", + "start a node 768 7\n", + "start a node 770 41\n", + "start a node 769 40\n", + "start a node 769 1\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 772 8\n", + "start a node 771 3\n", + "start a node 771 5\n", + "start a node 773 28\n", + "start a node 772 22\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 770 2\n", + "start a node 771 17\n", + "start a node 772 6\n", + "start a node 775 131\n", + "start a node 774 17\n", + "start a node 773 5\n", + "start a node 773 12\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 3\n", + "start a node 772 6\n", + "start a node 771 5\n", + "start a node 771 1\n", + "start a node 774 114\n", + "start a node 773 99\n", + "start a node 773 15\n", + "start a node 772 3\n", + "start a node 772 12\n", + "start a node 771 3\n", + "start a node 771 9\n", + "start a node 770 1\n", + "start a node 770 8\n", + "start a node 776 36\n", + "start a node 775 32\n", + "start a node 774 1\n", + "start a node 774 31\n", + "start a node 775 4\n", + "start a node 774 3\n", + "start a node 774 1\n", + "start a node 777 117\n", + "start a node 776 88\n", + "start a node 775 50\n", + "start a node 774 40\n", + "start a node 773 36\n", + "start a node 772 28\n", + "start a node 772 8\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 4\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 774 10\n", + "start a node 773 6\n", + "start a node 773 4\n", + "start a node 775 38\n", + "start a node 774 33\n", + "start a node 773 19\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 772 16\n", + "start a node 773 14\n", + "start a node 772 7\n", + "start a node 771 3\n", + "start a node 771 4\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 771 2\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 776 29\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 775 22\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 773 3\n", + "start a node 774 15\n", + "start a node 780 4907\n", + "start a node 779 2407\n", + "start a node 778 1847\n", + "start a node 777 1302\n", + "start a node 776 1257\n", + "start a node 775 1211\n", + "start a node 775 46\n", + "start a node 774 34\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 29\n", + "start a node 772 24\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 2\n", + "start a node 774 12\n", + "start a node 773 10\n", + "start a node 773 2\n", + "start a node 776 45\n", + "start a node 775 24\n", + "start a node 774 11\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 774 13\n", + "start a node 775 21\n", + "start a node 774 14\n", + "start a node 773 13\n", + "start a node 773 1\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 773 3\n", + "start a node 777 545\n", + "start a node 776 463\n", + "start a node 775 420\n", + "start a node 774 35\n", + "start a node 773 15\n", + "start a node 772 6\n", + "start a node 771 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 9\n", + "start a node 771 8\n", + "start a node 771 1\n", + "start a node 773 20\n", + "start a node 772 17\n", + "start a node 771 1\n", + "start a node 771 16\n", + "start a node 772 3\n", + "start a node 774 385\n", + "start a node 775 43\n", + "start a node 774 29\n", + "start a node 773 8\n", + "start a node 772 2\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 773 21\n", + "start a node 772 20\n", + "start a node 771 19\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 774 14\n", + "start a node 773 12\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 776 82\n", + "start a node 775 64\n", + "start a node 774 62\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 18\n", + "start a node 774 1\n", + "start a node 774 17\n", + "start a node 778 560\n", + "start a node 777 375\n", + "start a node 776 318\n", + "start a node 775 293\n", + "start a node 774 273\n", + "start a node 774 20\n", + "start a node 773 6\n", + "start a node 772 1\n", + "start a node 772 5\n", + "start a node 773 14\n", + "start a node 775 25\n", + "start a node 774 12\n", + "start a node 773 8\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 772 2\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 774 13\n", + "start a node 776 57\n", + "start a node 775 23\n", + "start a node 774 15\n", + "start a node 773 14\n", + "start a node 773 1\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 775 34\n", + "start a node 774 24\n", + "start a node 773 21\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 16\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 774 10\n", + "start a node 773 7\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 777 185\n", + "start a node 776 36\n", + "start a node 775 25\n", + "start a node 774 23\n", + "start a node 774 2\n", + "start a node 775 11\n", + "start a node 774 3\n", + "start a node 774 8\n", + "start a node 776 149\n", + "start a node 775 113\n", + "start a node 774 54\n", + "start a node 773 50\n", + "start a node 772 42\n", + "start a node 772 8\n", + "start a node 771 6\n", + "start a node 771 2\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 774 59\n", + "start a node 773 4\n", + "start a node 773 55\n", + "start a node 772 17\n", + "start a node 771 6\n", + "start a node 770 2\n", + "start a node 770 4\n", + "start a node 771 11\n", + "start a node 770 10\n", + "start a node 770 1\n", + "start a node 772 38\n", + "start a node 775 36\n", + "start a node 774 15\n", + "start a node 773 10\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 21\n", + "start a node 773 18\n", + "start a node 772 17\n", + "start a node 771 1\n", + "start a node 771 16\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 779 2500\n", + "start a node 778 2235\n", + "start a node 777 2156\n", + "start a node 777 79\n", + "start a node 776 11\n", + "start a node 775 6\n", + "start a node 774 2\n", + "start a node 774 4\n", + "start a node 775 5\n", + "start a node 776 68\n", + "start a node 775 64\n", + "start a node 774 12\n", + "start a node 773 7\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 774 52\n", + "start a node 775 4\n", + "start a node 778 265\n", + "start a node 777 94\n", + "start a node 776 48\n", + "start a node 775 25\n", + "start a node 774 10\n", + "start a node 773 8\n", + "start a node 772 6\n", + "start a node 772 2\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 15\n", + "start a node 773 9\n", + "start a node 772 7\n", + "start a node 772 2\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 775 23\n", + "start a node 774 21\n", + "start a node 773 19\n", + "start a node 772 18\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 2\n", + "start a node 776 46\n", + "start a node 775 12\n", + "start a node 774 10\n", + "start a node 773 9\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 775 34\n", + "start a node 774 29\n", + "start a node 773 24\n", + "start a node 772 21\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 772 1\n", + "start a node 772 4\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 777 171\n", + "start a node 776 48\n", + "start a node 775 37\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 32\n", + "start a node 775 11\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 774 6\n", + "start a node 776 123\n", + "start a node 775 88\n", + "start a node 774 15\n", + "start a node 773 12\n", + "start a node 773 3\n", + "start a node 774 73\n", + "start a node 773 68\n", + "start a node 772 48\n", + "start a node 772 20\n", + "start a node 771 17\n", + "start a node 770 1\n", + "start a node 770 16\n", + "start a node 771 3\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 775 35\n", + "start a node 774 20\n", + "start a node 773 18\n", + "start a node 772 16\n", + "start a node 771 1\n", + "start a node 771 15\n", + "start a node 772 2\n", + "start a node 773 2\n", + "start a node 774 15\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 11\n", + "start a node 772 10\n", + "start a node 771 1\n", + "start a node 771 9\n", + "start a node 772 1\n", + "start a node 781 3362\n", + "start a node 780 1995\n", + "start a node 779 1270\n", + "start a node 778 1084\n", + "start a node 777 854\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 776 322\n", + "start a node 775 86\n", + "start a node 774 49\n", + "start a node 773 44\n", + "start a node 772 41\n", + "start a node 771 22\n", + "start a node 770 17\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 769 2\n", + "start a node 771 19\n", + "start a node 770 17\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 768 2\n", + "start a node 769 13\n", + "start a node 770 2\n", + "start a node 772 3\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 774 37\n", + "start a node 773 24\n", + "start a node 772 21\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 19\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 13\n", + "start a node 772 12\n", + "start a node 772 1\n", + "start a node 775 236\n", + "start a node 774 213\n", + "start a node 773 204\n", + "start a node 772 162\n", + "start a node 772 42\n", + "start a node 771 13\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 770 9\n", + "start a node 769 1\n", + "start a node 769 8\n", + "start a node 771 29\n", + "start a node 770 24\n", + "start a node 770 5\n", + "start a node 769 2\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 768 1\n", + "start a node 773 9\n", + "start a node 772 8\n", + "start a node 772 1\n", + "start a node 774 23\n", + "start a node 773 11\n", + "start a node 773 12\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 772 6\n", + "start a node 776 532\n", + "start a node 777 230\n", + "start a node 776 156\n", + "start a node 775 119\n", + "start a node 774 98\n", + "start a node 773 91\n", + "start a node 772 83\n", + "start a node 771 66\n", + "start a node 771 17\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 13\n", + "start a node 769 12\n", + "start a node 769 1\n", + "start a node 772 8\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 774 21\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 11\n", + "start a node 772 10\n", + "start a node 772 1\n", + "start a node 775 37\n", + "start a node 774 19\n", + "start a node 773 10\n", + "start a node 772 7\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 9\n", + "start a node 774 18\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 13\n", + "start a node 772 12\n", + "start a node 772 1\n", + "start a node 776 74\n", + "start a node 775 68\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 774 63\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 773 57\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 778 186\n", + "start a node 777 86\n", + "start a node 776 47\n", + "start a node 775 17\n", + "start a node 774 7\n", + "start a node 773 5\n", + "start a node 773 2\n", + "start a node 774 10\n", + "start a node 773 8\n", + "start a node 773 2\n", + "start a node 775 30\n", + "start a node 774 22\n", + "start a node 773 15\n", + "start a node 772 14\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 774 8\n", + "start a node 773 7\n", + "start a node 773 1\n", + "start a node 776 39\n", + "start a node 775 33\n", + "start a node 774 16\n", + "start a node 773 13\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 9\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 774 17\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 777 100\n", + "start a node 776 73\n", + "start a node 775 51\n", + "start a node 774 40\n", + "start a node 773 39\n", + "start a node 773 1\n", + "start a node 774 11\n", + "start a node 773 10\n", + "start a node 773 1\n", + "start a node 775 22\n", + "start a node 776 27\n", + "start a node 775 5\n", + "start a node 774 1\n", + "start a node 774 4\n", + "start a node 775 22\n", + "start a node 774 11\n", + "start a node 773 10\n", + "start a node 773 1\n", + "start a node 774 11\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 9\n", + "start a node 779 725\n", + "start a node 778 307\n", + "start a node 777 211\n", + "start a node 776 168\n", + "start a node 775 147\n", + "start a node 774 136\n", + "start a node 773 132\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 130\n", + "start a node 771 128\n", + "start a node 771 2\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 11\n", + "start a node 773 8\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 775 21\n", + "start a node 774 16\n", + "start a node 773 15\n", + "start a node 773 1\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 776 43\n", + "start a node 775 30\n", + "start a node 774 14\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 8\n", + "start a node 774 16\n", + "start a node 773 2\n", + "start a node 773 14\n", + "start a node 775 13\n", + "start a node 774 11\n", + "start a node 774 2\n", + "start a node 777 96\n", + "start a node 776 48\n", + "start a node 775 37\n", + "start a node 774 30\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 772 3\n", + "start a node 773 23\n", + "start a node 774 7\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 775 11\n", + "start a node 774 10\n", + "start a node 774 1\n", + "start a node 776 48\n", + "start a node 775 19\n", + "start a node 774 12\n", + "start a node 773 8\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 7\n", + "start a node 775 29\n", + "start a node 774 27\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 778 418\n", + "start a node 777 133\n", + "start a node 776 71\n", + "start a node 775 58\n", + "start a node 774 31\n", + "start a node 773 15\n", + "start a node 772 8\n", + "start a node 771 5\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 772 7\n", + "start a node 773 16\n", + "start a node 772 12\n", + "start a node 771 11\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 774 27\n", + "start a node 775 13\n", + "start a node 774 5\n", + "start a node 774 8\n", + "start a node 776 62\n", + "start a node 775 15\n", + "start a node 774 12\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 775 47\n", + "start a node 774 32\n", + "start a node 773 30\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 15\n", + "start a node 773 7\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 777 285\n", + "start a node 776 244\n", + "start a node 775 182\n", + "start a node 774 178\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 775 62\n", + "start a node 774 35\n", + "start a node 773 24\n", + "start a node 772 18\n", + "start a node 771 15\n", + "start a node 770 1\n", + "start a node 770 14\n", + "start a node 771 3\n", + "start a node 772 6\n", + "start a node 771 4\n", + "start a node 771 2\n", + "start a node 773 11\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 772 5\n", + "start a node 774 27\n", + "start a node 773 24\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 776 41\n", + "start a node 775 29\n", + "start a node 774 13\n", + "start a node 773 7\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 16\n", + "start a node 773 14\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 775 12\n", + "start a node 774 6\n", + "start a node 773 5\n", + "start a node 773 1\n", + "start a node 774 6\n", + "start a node 773 5\n", + "start a node 773 1\n", + "start a node 780 1367\n", + "start a node 779 358\n", + "start a node 778 123\n", + "start a node 777 50\n", + "start a node 776 33\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 775 26\n", + "start a node 774 25\n", + "start a node 774 1\n", + "start a node 776 17\n", + "start a node 775 14\n", + "start a node 774 1\n", + "start a node 774 13\n", + "start a node 775 3\n", + "start a node 777 73\n", + "start a node 776 63\n", + "start a node 775 58\n", + "start a node 774 54\n", + "start a node 773 52\n", + "start a node 772 51\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 775 5\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 776 10\n", + "start a node 775 9\n", + "start a node 775 1\n", + "start a node 778 235\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 777 198\n", + "start a node 776 157\n", + "start a node 775 152\n", + "start a node 774 25\n", + "start a node 773 16\n", + "start a node 773 9\n", + "start a node 772 5\n", + "start a node 771 1\n", + "start a node 771 4\n", + "start a node 772 4\n", + "start a node 774 127\n", + "start a node 775 5\n", + "start a node 774 3\n", + "start a node 774 2\n", + "start a node 776 41\n", + "start a node 775 23\n", + "start a node 774 4\n", + "start a node 774 19\n", + "start a node 773 15\n", + "start a node 773 4\n", + "start a node 772 1\n", + "start a node 772 3\n", + "start a node 775 18\n", + "start a node 774 16\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 777 37\n", + "start a node 776 20\n", + "start a node 775 1\n", + "start a node 775 19\n", + "start a node 776 17\n", + "start a node 775 13\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 9\n", + "start a node 775 4\n", + "start a node 774 2\n", + "start a node 774 2\n", + "start a node 779 1009\n", + "start a node 782 11271\n", + "start a node 781 8844\n", + "start a node 780 7620\n", + "start a node 779 6749\n", + "start a node 778 5818\n", + "start a node 777 5524\n", + "start a node 777 294\n", + "start a node 776 105\n", + "start a node 775 81\n", + "start a node 774 70\n", + "start a node 773 23\n", + "start a node 772 17\n", + "start a node 772 6\n", + "start a node 771 5\n", + "start a node 771 1\n", + "start a node 773 47\n", + "start a node 772 39\n", + "start a node 771 25\n", + "start a node 770 15\n", + "start a node 769 11\n", + "start a node 768 9\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 4\n", + "start a node 770 10\n", + "start a node 769 5\n", + "start a node 768 1\n", + "start a node 768 4\n", + "start a node 769 5\n", + "start a node 768 4\n", + "start a node 768 1\n", + "start a node 771 14\n", + "start a node 770 1\n", + "start a node 770 13\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 774 11\n", + "start a node 773 10\n", + "start a node 773 1\n", + "start a node 775 24\n", + "start a node 774 23\n", + "start a node 774 1\n", + "start a node 776 189\n", + "start a node 775 175\n", + "start a node 774 171\n", + "start a node 773 28\n", + "start a node 772 10\n", + "start a node 771 2\n", + "start a node 771 8\n", + "start a node 770 4\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 772 18\n", + "start a node 771 15\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 773 143\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 775 14\n", + "start a node 774 5\n", + "start a node 773 1\n", + "start a node 773 4\n", + "start a node 774 9\n", + "start a node 778 931\n", + "start a node 777 533\n", + "start a node 776 236\n", + "start a node 775 193\n", + "start a node 774 146\n", + "start a node 773 115\n", + "start a node 772 29\n", + "start a node 771 25\n", + "start a node 770 7\n", + "start a node 769 3\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 770 18\n", + "start a node 769 12\n", + "start a node 769 6\n", + "start a node 768 3\n", + "start a node 768 3\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 772 86\n", + "start a node 771 56\n", + "start a node 770 51\n", + "start a node 769 1\n", + "start a node 769 50\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 771 30\n", + "start a node 770 17\n", + "start a node 769 7\n", + "start a node 769 10\n", + "start a node 768 6\n", + "start a node 767 3\n", + "start a node 767 3\n", + "start a node 768 4\n", + "start a node 767 3\n", + "start a node 767 1\n", + "start a node 770 13\n", + "start a node 773 31\n", + "start a node 772 16\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 13\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 11\n", + "start a node 772 15\n", + "start a node 774 47\n", + "start a node 773 28\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 23\n", + "start a node 771 19\n", + "start a node 770 17\n", + "start a node 769 16\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 773 19\n", + "start a node 772 18\n", + "start a node 772 1\n", + "start a node 775 43\n", + "start a node 774 14\n", + "start a node 773 7\n", + "start a node 773 7\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 774 29\n", + "start a node 773 22\n", + "start a node 772 21\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 776 297\n", + "start a node 775 21\n", + "start a node 774 16\n", + "start a node 773 15\n", + "start a node 773 1\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 775 276\n", + "start a node 774 265\n", + "start a node 774 11\n", + "start a node 773 9\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 7\n", + "start a node 773 2\n", + "start a node 777 398\n", + "start a node 776 298\n", + "start a node 775 230\n", + "start a node 774 44\n", + "start a node 773 17\n", + "start a node 772 14\n", + "start a node 771 11\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 27\n", + "start a node 772 20\n", + "start a node 771 3\n", + "start a node 771 17\n", + "start a node 770 16\n", + "start a node 770 1\n", + "start a node 772 7\n", + "start a node 774 186\n", + "start a node 773 179\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 775 68\n", + "start a node 774 33\n", + "start a node 773 12\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 9\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 773 21\n", + "start a node 772 18\n", + "start a node 771 2\n", + "start a node 771 16\n", + "start a node 770 1\n", + "start a node 770 15\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 774 35\n", + "start a node 773 29\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 2\n", + "start a node 772 24\n", + "start a node 771 1\n", + "start a node 771 23\n", + "start a node 773 6\n", + "start a node 776 100\n", + "start a node 775 64\n", + "start a node 774 52\n", + "start a node 773 27\n", + "start a node 772 12\n", + "start a node 771 6\n", + "start a node 770 5\n", + "start a node 770 1\n", + "start a node 771 6\n", + "start a node 770 5\n", + "start a node 770 1\n", + "start a node 772 15\n", + "start a node 771 14\n", + "start a node 771 1\n", + "start a node 773 25\n", + "start a node 772 22\n", + "start a node 771 20\n", + "start a node 770 19\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 3\n", + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 775 36\n", + "start a node 774 25\n", + "start a node 773 24\n", + "start a node 773 1\n", + "start a node 774 11\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 779 871\n", + "start a node 778 548\n", + "start a node 777 459\n", + "start a node 776 205\n", + "start a node 775 70\n", + "start a node 774 34\n", + "start a node 773 8\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 2\n", + "start a node 772 3\n", + "start a node 773 26\n", + "start a node 772 23\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 774 36\n", + "start a node 773 23\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 772 17\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 15\n", + "start a node 773 13\n", + "start a node 772 5\n", + "start a node 772 8\n", + "start a node 775 135\n", + "start a node 774 29\n", + "start a node 773 19\n", + "start a node 772 18\n", + "start a node 772 1\n", + "start a node 773 10\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 772 6\n", + "start a node 774 106\n", + "start a node 773 99\n", + "start a node 772 10\n", + "start a node 771 6\n", + "start a node 770 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 771 4\n", + "start a node 772 89\n", + "start a node 771 87\n", + "start a node 771 2\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 776 254\n", + "start a node 775 157\n", + "start a node 774 52\n", + "start a node 773 43\n", + "start a node 772 42\n", + "start a node 771 34\n", + "start a node 771 8\n", + "start a node 770 6\n", + "start a node 770 2\n", + "start a node 772 1\n", + "start a node 773 9\n", + "start a node 772 4\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 774 105\n", + "start a node 773 89\n", + "start a node 772 74\n", + "start a node 771 7\n", + "start a node 770 2\n", + "start a node 770 5\n", + "start a node 771 67\n", + "start a node 770 65\n", + "start a node 769 61\n", + "start a node 768 58\n", + "start a node 768 3\n", + "start a node 767 1\n", + "start a node 767 2\n", + "start a node 769 4\n", + "start a node 768 2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 15\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 12\n", + "start a node 773 16\n", + "start a node 772 15\n", + "start a node 772 1\n", + "start a node 775 97\n", + "start a node 774 54\n", + "start a node 773 28\n", + "start a node 772 26\n", + "start a node 771 25\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 26\n", + "start a node 772 19\n", + "start a node 771 1\n", + "start a node 771 18\n", + "start a node 772 7\n", + "start a node 771 4\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 774 43\n", + "start a node 777 89\n", + "start a node 776 42\n", + "start a node 775 16\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 773 2\n", + "start a node 774 12\n", + "start a node 773 8\n", + "start a node 772 6\n", + "start a node 772 2\n", + "start a node 773 4\n", + "start a node 775 26\n", + "start a node 774 21\n", + "start a node 773 18\n", + "start a node 772 16\n", + "start a node 771 15\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 774 5\n", + "start a node 776 47\n", + "start a node 775 41\n", + "start a node 774 40\n", + "start a node 773 38\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 1\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 778 323\n", + "start a node 777 146\n", + "start a node 776 42\n", + "start a node 775 35\n", + "start a node 774 33\n", + "start a node 773 31\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 7\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 776 104\n", + "start a node 775 85\n", + "start a node 774 80\n", + "start a node 773 3\n", + "start a node 773 77\n", + "start a node 772 76\n", + "start a node 772 1\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 775 19\n", + "start a node 774 7\n", + "start a node 773 2\n", + "start a node 773 5\n", + "start a node 774 12\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 777 177\n", + "start a node 780 1224\n", + "start a node 779 938\n", + "start a node 778 782\n", + "start a node 777 637\n", + "start a node 776 594\n", + "start a node 775 61\n", + "start a node 774 32\n", + "start a node 773 20\n", + "start a node 772 19\n", + "start a node 772 1\n", + "start a node 773 12\n", + "start a node 772 6\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 774 29\n", + "start a node 773 2\n", + "start a node 773 27\n", + "start a node 772 26\n", + "start a node 772 1\n", + "start a node 775 533\n", + "start a node 776 43\n", + "start a node 775 28\n", + "start a node 774 9\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 774 19\n", + "start a node 775 15\n", + "start a node 774 6\n", + "start a node 774 9\n", + "start a node 773 7\n", + "start a node 773 2\n", + "start a node 777 145\n", + "start a node 776 43\n", + "start a node 775 16\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 14\n", + "start a node 775 27\n", + "start a node 774 12\n", + "start a node 773 10\n", + "start a node 772 9\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 15\n", + "start a node 773 10\n", + "start a node 772 9\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 776 102\n", + "start a node 775 84\n", + "start a node 774 70\n", + "start a node 773 68\n", + "start a node 772 65\n", + "start a node 771 64\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 2\n", + "start a node 774 14\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 773 9\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 6\n", + "start a node 771 5\n", + "start a node 771 1\n", + "start a node 775 18\n", + "start a node 774 16\n", + "start a node 773 15\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 778 156\n", + "start a node 777 40\n", + "start a node 776 19\n", + "start a node 775 2\n", + "start a node 775 17\n", + "start a node 776 21\n", + "start a node 775 7\n", + "start a node 774 4\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 775 14\n", + "start a node 774 13\n", + "start a node 774 1\n", + "start a node 777 116\n", + "start a node 776 108\n", + "start a node 775 106\n", + "start a node 775 2\n", + "start a node 774 1\n", + "start a node 774 1\n", + "start a node 776 8\n", + "start a node 775 4\n", + "start a node 774 1\n", + "start a node 774 3\n", + "start a node 775 4\n", + "start a node 774 3\n", + "start a node 774 1\n", + "start a node 779 286\n", + "start a node 778 96\n", + "start a node 777 83\n", + "start a node 776 70\n", + "start a node 775 58\n", + "start a node 775 12\n", + "start a node 774 9\n", + "start a node 773 8\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 776 13\n", + "start a node 775 10\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 774 1\n", + "start a node 777 13\n", + "start a node 776 8\n", + "start a node 775 7\n", + "start a node 774 6\n", + "start a node 774 1\n", + "start a node 775 1\n", + "start a node 776 5\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 1\n", + "start a node 775 2\n", + "start a node 778 190\n", + "start a node 777 59\n", + "start a node 776 45\n", + "start a node 775 8\n", + "start a node 774 4\n", + "start a node 774 4\n", + "start a node 775 37\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 33\n", + "start a node 773 32\n", + "start a node 773 1\n", + "start a node 776 14\n", + "start a node 775 11\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 1\n", + "start a node 777 131\n", + "start a node 776 115\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 774 4\n", + "start a node 775 108\n", + "start a node 776 16\n", + "start a node 775 8\n", + "start a node 774 6\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 8\n", + "start a node 774 5\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 781 2427\n", + "start a node 780 1303\n", + "start a node 779 595\n", + "start a node 778 266\n", + "start a node 777 197\n", + "start a node 776 179\n", + "start a node 775 56\n", + "start a node 774 14\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 772 2\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 42\n", + "start a node 773 12\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 773 30\n", + "start a node 772 8\n", + "start a node 771 5\n", + "start a node 770 4\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 772 22\n", + "start a node 775 123\n", + "start a node 774 106\n", + "start a node 774 17\n", + "start a node 773 10\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 8\n", + "start a node 773 7\n", + "start a node 772 1\n", + "start a node 772 6\n", + "start a node 776 18\n", + "start a node 775 4\n", + "start a node 774 3\n", + "start a node 774 1\n", + "start a node 775 14\n", + "start a node 774 12\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 777 69\n", + "start a node 776 33\n", + "start a node 775 25\n", + "start a node 774 12\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 773 7\n", + "start a node 774 13\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 772 5\n", + "start a node 773 5\n", + "start a node 772 1\n", + "start a node 772 4\n", + "start a node 775 8\n", + "start a node 774 7\n", + "start a node 774 1\n", + "start a node 776 36\n", + "start a node 775 32\n", + "start a node 774 3\n", + "start a node 774 29\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 773 23\n", + "start a node 772 20\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 775 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 778 329\n", + "start a node 777 264\n", + "start a node 776 41\n", + "start a node 775 28\n", + "start a node 774 14\n", + "start a node 773 12\n", + "start a node 773 2\n", + "start a node 774 14\n", + "start a node 773 9\n", + "start a node 772 5\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 775 13\n", + "start a node 774 1\n", + "start a node 774 12\n", + "start a node 776 223\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 775 40\n", + "start a node 774 14\n", + "start a node 773 12\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 26\n", + "start a node 773 3\n", + "start a node 773 23\n", + "start a node 772 20\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 775 183\n", + "start a node 774 117\n", + "start a node 774 66\n", + "start a node 773 61\n", + "start a node 772 57\n", + "start a node 771 49\n", + "start a node 770 45\n", + "start a node 769 6\n", + "start a node 768 2\n", + "start a node 768 4\n", + "start a node 769 39\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 771 8\n", + "start a node 770 3\n", + "start a node 770 5\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 777 65\n", + "start a node 776 33\n", + "start a node 775 29\n", + "start a node 774 27\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 4\n", + "start a node 774 1\n", + "start a node 774 3\n", + "start a node 776 32\n", + "start a node 775 22\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 774 19\n", + "start a node 773 18\n", + "start a node 773 1\n", + "start a node 775 10\n", + "start a node 774 1\n", + "start a node 774 9\n", + "start a node 779 708\n", + "start a node 778 578\n", + "start a node 777 517\n", + "start a node 776 458\n", + "start a node 775 49\n", + "start a node 774 36\n", + "start a node 773 8\n", + "start a node 772 5\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 773 28\n", + "start a node 772 25\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 774 13\n", + "start a node 773 8\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 6\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 775 409\n", + "start a node 776 59\n", + "start a node 775 37\n", + "start a node 774 16\n", + "start a node 773 10\n", + "start a node 772 6\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 774 21\n", + "start a node 773 2\n", + "start a node 773 19\n", + "start a node 775 22\n", + "start a node 774 13\n", + "start a node 774 9\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 777 61\n", + "start a node 776 37\n", + "start a node 775 18\n", + "start a node 774 3\n", + "start a node 774 15\n", + "start a node 773 14\n", + "start a node 773 1\n", + "start a node 775 19\n", + "start a node 774 16\n", + "start a node 773 12\n", + "start a node 772 11\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 776 24\n", + "start a node 775 5\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 775 19\n", + "start a node 774 1\n", + "start a node 774 18\n", + "start a node 773 17\n", + "start a node 773 1\n", + "start a node 778 130\n", + "start a node 777 79\n", + "start a node 776 77\n", + "start a node 775 76\n", + "start a node 775 1\n", + "start a node 776 2\n", + "start a node 775 1\n", + "start a node 775 1\n", + "start a node 777 51\n", + "start a node 776 29\n", + "start a node 775 12\n", + "start a node 774 6\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 6\n", + "start a node 775 17\n", + "start a node 774 14\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 776 22\n", + "start a node 775 18\n", + "start a node 774 2\n", + "start a node 774 16\n", + "start a node 773 15\n", + "start a node 773 1\n", + "start a node 775 4\n", + "start a node 780 1124\n", + "start a node 779 430\n", + "start a node 778 280\n", + "start a node 777 197\n", + "start a node 776 42\n", + "start a node 775 18\n", + "start a node 774 12\n", + "start a node 773 4\n", + "start a node 772 1\n", + "start a node 772 3\n", + "start a node 773 8\n", + "start a node 774 6\n", + "start a node 775 24\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 773 2\n", + "start a node 774 19\n", + "start a node 776 155\n", + "start a node 777 83\n", + "start a node 776 41\n", + "start a node 775 21\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 772 1\n", + "start a node 772 3\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 13\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 10\n", + "start a node 775 20\n", + "start a node 774 18\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 776 42\n", + "start a node 775 38\n", + "start a node 774 17\n", + "start a node 773 7\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 773 10\n", + "start a node 772 9\n", + "start a node 772 1\n", + "start a node 774 21\n", + "start a node 775 4\n", + "start a node 774 2\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 778 150\n", + "start a node 777 116\n", + "start a node 776 44\n", + "start a node 775 36\n", + "start a node 774 34\n", + "start a node 773 1\n", + "start a node 773 33\n", + "start a node 774 2\n", + "start a node 775 8\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 773 1\n", + "start a node 773 3\n", + "start a node 776 72\n", + "start a node 775 14\n", + "start a node 774 13\n", + "start a node 774 1\n", + "start a node 775 58\n", + "start a node 774 50\n", + "start a node 773 11\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 9\n", + "start a node 771 5\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 773 39\n", + "start a node 772 38\n", + "start a node 772 1\n", + "start a node 774 8\n", + "start a node 773 7\n", + "start a node 773 1\n", + "start a node 777 34\n", + "start a node 776 9\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 774 1\n", + "start a node 775 6\n", + "start a node 776 25\n", + "start a node 775 24\n", + "start a node 775 1\n", + "start a node 779 694\n", + "tree is: {378: {0: {567: {0: {541: {0: {458: {0: {403: {0: {590: {0: {483: {0: {154: {0: {429: {0: 7, 1: {209: {0: {265: {0: {237: {0: {181: {0: {317: {0: {542: {0: {607: {0: 4, 1: {99: {0: 5, 1: 2}}}}, 1: {202: {0: 9, 1: 3}}}}, 1: {261: {0: 5, 1: {158: {0: 9, 1: 8}}}}}}, 1: {480: {0: {155: {0: 9, 1: 3}}, 1: {121: {0: {153: {0: 4, 1: 8}}, 1: 2}}}}}}, 1: {403: {0: {286: {0: {209: {0: 2, 1: 4}}, 1: 5}}, 1: {401: {0: {185: {0: 4, 1: 9}}, 1: {231: {0: 9, 1: 3}}}}}}}}, 1: {403: {0: {204: {0: {98: {0: 5, 1: 2}}, 1: 7}}, 1: {398: {0: {644: {0: {295: {0: {233: {0: 7, 1: 3}}, 1: 7}}, 1: {204: {0: 9, 1: {174: {0: 7, 1: 2}}}}}}, 1: {263: {0: 4, 1: {405: {0: 9, 1: 5}}}}}}}}}}, 1: {404: {0: {562: {0: {431: {0: {268: {0: 5, 1: {177: {0: 9, 1: 3}}}}, 1: {345: {0: {426: {0: {234: {0: 9, 1: 8}}, 1: 9}}, 1: {178: {0: 3, 1: 5}}}}}}, 1: {296: {0: {218: {0: 2, 1: 4}}, 1: 8}}}}, 1: {426: {0: {372: {0: {232: {0: 3, 1: {181: {0: 7, 1: 3}}}}, 1: {103: {0: {175: {0: 9, 1: 8}}, 1: 6}}}}, 1: {177: {0: {289: {0: 9, 1: {400: {0: {207: {0: 4, 1: {159: {0: 9, 1: 4}}}}, 1: 9}}}}, 1: {619: {0: {178: {0: 7, 1: 9}}, 1: 3}}}}}}}}}}}}, 1: {512: {0: {508: {0: {512: {0: {321: {0: {478: {0: {481: {0: {642: {0: {183: {0: {613: {0: {375: {0: 4, 1: {154: {0: 1, 1: 4}}}}, 1: {123: {0: 5, 1: {92: {0: 0, 1: 2}}}}}}, 1: {209: {0: {152: {0: 5, 1: 9}}, 1: {211: {0: 3, 1: 7}}}}}}, 1: {560: {0: {239: {0: {240: {0: {587: {0: 5, 1: {375: {0: {204: {0: 5, 1: 9}}, 1: {181: {0: 5, 1: 3}}}}}}, 1: {123: {0: 3, 1: 0}}}}, 1: {157: {0: 3, 1: 5}}}}, 1: {128: {0: 2, 1: 5}}}}}}, 1: {458: {0: {127: {0: 3, 1: 2}}, 1: 8}}}}, 1: {98: {0: 0, 1: 6}}}}, 1: {266: {0: {267: {0: {237: {0: {456: {0: 5, 1: {124: {0: 9, 1: 3}}}}, 1: {369: {0: {126: {0: 3, 1: 1}}, 1: {154: {0: 3, 1: 5}}}}}}, 1: {238: {0: 3, 1: 9}}}}, 1: {402: {0: {286: {0: 3, 1: 9}}, 1: 9}}}}}}, 1: {350: {0: {587: {0: {639: {0: {211: {0: {290: {0: 9, 1: {154: {0: 4, 1: 5}}}}, 1: {615: {0: {177: {0: 8, 1: 3}}, 1: {154: {0: 9, 1: {175: {0: 2, 1: {182: {0: 2, 1: 7}}}}}}}}}}, 1: 3}}, 1: {159: {0: {402: {0: {381: {0: 2, 1: 7}}, 1: 8}}, 1: {123: {0: {124: {0: 5, 1: 6}}, 1: 1}}}}}}, 1: {351: {0: {213: {0: {647: {0: 1, 1: 2}}, 1: 3}}, 1: {613: {0: {151: {0: 9, 1: {148: {0: 2, 1: 7}}}}, 1: 3}}}}}}}}, 1: {459: {0: {294: {0: {431: {0: 0, 1: 9}}, 1: {180: {0: 8, 1: 3}}}}, 1: {72: {0: {122: {0: 8, 1: 2}}, 1: 6}}}}}}, 1: {376: {0: {479: {0: {592: {0: {648: {0: {567: {0: {537: {0: {152: {0: {425: {0: 1, 1: {95: {0: 8, 1: 2}}}}, 1: {180: {0: 7, 1: 2}}}}, 1: {229: {0: {176: {0: 7, 1: {212: {0: 2, 1: 7}}}}, 1: 2}}}}, 1: {563: {0: {124: {0: 8, 1: 9}}, 1: 2}}}}, 1: {151: {0: {154: {0: {618: {0: {151: {0: 9, 1: 3}}, 1: 8}}, 1: {176: {0: 8, 1: 2}}}}, 1: 2}}}}, 1: {383: {0: {534: {0: {213: {0: 2, 1: {152: {0: 8, 1: 3}}}}, 1: 2}}, 1: {93: {0: 5, 1: 8}}}}}}, 1: {298: {0: 6, 1: {99: {0: 9, 1: 4}}}}}}, 1: {431: {0: {155: {0: 1, 1: 5}}, 1: 8}}}}}}}}, 1: {211: {0: {537: {0: {266: {0: {183: {0: {237: {0: {127: {0: {317: {0: {380: {0: 4, 1: {418: {0: {260: {0: 4, 1: 0}}, 1: 6}}}}, 1: {259: {0: {162: {0: 5, 1: 4}}, 1: {230: {0: 9, 1: {230: {0: 0, 1: 7}}}}}}}}, 1: {589: {0: {155: {0: 4, 1: {205: {0: 2, 1: 8}}}}, 1: {455: {0: {99: {0: 5, 1: 0}}, 1: 6}}}}}}, 1: {350: {0: {132: {0: 7, 1: 4}}, 1: 9}}}}, 1: {206: {0: {210: {0: {266: {0: {454: {0: {374: {0: 2, 1: {99: {0: 4, 1: 6}}}}, 1: 4}}, 1: {156: {0: {100: {0: 9, 1: 2}}, 1: 0}}}}, 1: {153: {0: {156: {0: 9, 1: 8}}, 1: {122: {0: 5, 1: 2}}}}}}, 1: {186: {0: 9, 1: {150: {0: 8, 1: 5}}}}}}}}, 1: {487: {0: {458: {0: {354: {0: 5, 1: {154: {0: {199: {0: 0, 1: 7}}, 1: 2}}}}, 1: {264: {0: {104: {0: {160: {0: 3, 1: 4}}, 1: 6}}, 1: {180: {0: {236: {0: 0, 1: 9}}, 1: 7}}}}}}, 1: {211: {0: {439: {0: {537: {0: {260: {0: {160: {0: 9, 1: 4}}, 1: {311: {0: 7, 1: 9}}}}, 1: 7}}, 1: 2}}, 1: {297: {0: 4, 1: 9}}}}}}}}, 1: {269: {0: {244: {0: {293: {0: {245: {0: 6, 1: 4}}, 1: {121: {0: {149: {0: 9, 1: 4}}, 1: 8}}}}, 1: 4}}, 1: {291: {0: {183: {0: {236: {0: {323: {0: 4, 1: 6}}, 1: {175: {0: 0, 1: 9}}}}, 1: {121: {0: 9, 1: 2}}}}, 1: {376: {0: 5, 1: {104: {0: 7, 1: 4}}}}}}}}}}, 1: {407: {0: {378: {0: {432: {0: {448: {0: {433: {0: {515: {0: {378: {0: 5, 1: 9}}, 1: 2}}, 1: {178: {0: 0, 1: {152: {0: 2, 1: 9}}}}}}, 1: {203: {0: {181: {0: 4, 1: 9}}, 1: 0}}}}, 1: {564: {0: {187: {0: 9, 1: 7}}, 1: {211: {0: {101: {0: 8, 1: 6}}, 1: 7}}}}}}, 1: {230: {0: {156: {0: {532: {0: {207: {0: {457: {0: {154: {0: {505: {0: 9, 1: {314: {0: {239: {0: 7, 1: 4}}, 1: 9}}}}, 1: 4}}, 1: {283: {0: 4, 1: {178: {0: 7, 1: 9}}}}}}, 1: {181: {0: {261: {0: 7, 1: 9}}, 1: {500: {0: 9, 1: 2}}}}}}, 1: 2}}, 1: {158: {0: 4, 1: 3}}}}, 1: {211: {0: 3, 1: 7}}}}}}, 1: {589: {0: {346: {0: {230: {0: 9, 1: {312: {0: 7, 1: 9}}}}, 1: {462: {0: {128: {0: {322: {0: 9, 1: 4}}, 1: {71: {0: 4, 1: 6}}}}, 1: {351: {0: {100: {0: 9, 1: 6}}, 1: 4}}}}}}, 1: {373: {0: {381: {0: 2, 1: {180: {0: 8, 1: 7}}}}, 1: {431: {0: 0, 1: {103: {0: 9, 1: 6}}}}}}}}}}}}}}, 1: {425: {0: {322: {0: {458: {0: {481: {0: {384: {0: {451: {0: {395: {0: {151: {0: {324: {0: {324: {0: 5, 1: {149: {0: 0, 1: 3}}}}, 1: {210: {0: {94: {0: 5, 1: 2}}, 1: 3}}}}, 1: {355: {0: 3, 1: 2}}}}, 1: {203: {0: 0, 1: 2}}}}, 1: 0}}, 1: 0}}, 1: {191: {0: {276: {0: 2, 1: 5}}, 1: {245: {0: 5, 1: 8}}}}}}, 1: {537: {0: {404: {0: {433: {0: {124: {0: {481: {0: 5, 1: 6}}, 1: 2}}, 1: {263: {0: 2, 1: {154: {0: {133: {0: 2, 1: 1}}, 1: 3}}}}}}, 1: {268: {0: {535: {0: 3, 1: 1}}, 1: {504: {0: 1, 1: 2}}}}}}, 1: {266: {0: {644: {0: 2, 1: 3}}, 1: {131: {0: 7, 1: {131: {0: 1, 1: 0}}}}}}}}}}, 1: {317: {0: {424: {0: {268: {0: {269: {0: {149: {0: {321: {0: {245: {0: 5, 1: 0}}, 1: {289: {0: 3, 1: {637: {0: 5, 1: {128: {0: 3, 1: 5}}}}}}}}, 1: {234: {0: 3, 1: 5}}}}, 1: {583: {0: {123: {0: {151: {0: 5, 1: 9}}, 1: 3}}, 1: 3}}}}, 1: {219: {0: {419: {0: 3, 1: {96: {0: 0, 1: 3}}}}, 1: 5}}}}, 1: {590: {0: {124: {0: {151: {0: 5, 1: 3}}, 1: 2}}, 1: {107: {0: 0, 1: 6}}}}}}, 1: {301: {0: {125: {0: {242: {0: 5, 1: {157: {0: 5, 1: {155: {0: 1, 1: 3}}}}}}, 1: {260: {0: {133: {0: 3, 1: 5}}, 1: 5}}}}, 1: 0}}}}}}, 1: {512: {0: 0, 1: {103: {0: 2, 1: 6}}}}}}}}, 1: {380: {0: {408: {0: {352: {0: {349: {0: {378: {0: {321: {0: 5, 1: {153: {0: {179: {0: {132: {0: {455: {0: 5, 1: {204: {0: {133: {0: 5, 1: 0}}, 1: 3}}}}, 1: {159: {0: 8, 1: 0}}}}, 1: {233: {0: 3, 1: {180: {0: 5, 1: 8}}}}}}, 1: {235: {0: 3, 1: 5}}}}}}, 1: {647: {0: {318: {0: {260: {0: 2, 1: 4}}, 1: {153: {0: 4, 1: 9}}}}, 1: {183: {0: {209: {0: {123: {0: 4, 1: 3}}, 1: 9}}, 1: {238: {0: 8, 1: 5}}}}}}}}, 1: {179: {0: {319: {0: {507: {0: {188: {0: {244: {0: {529: {0: 3, 1: 6}}, 1: {184: {0: 5, 1: 0}}}}, 1: 5}}, 1: {182: {0: {204: {0: 5, 1: 2}}, 1: {645: {0: 6, 1: 1}}}}}}, 1: {475: {0: {507: {0: {292: {0: {370: {0: {205: {0: 8, 1: 5}}, 1: 5}}, 1: {484: {0: 5, 1: {291: {0: {159: {0: 3, 1: 0}}, 1: 5}}}}}}, 1: {510: {0: {180: {0: {645: {0: 5, 1: 1}}, 1: {99: {0: 1, 1: 4}}}}, 1: 6}}}}, 1: {245: {0: 2, 1: 0}}}}}}, 1: {535: {0: {263: {0: {353: {0: 3, 1: {150: {0: 5, 1: 0}}}}, 1: {209: {0: {155: {0: 1, 1: 8}}, 1: {152: {0: 5, 1: 3}}}}}}, 1: {153: {0: {171: {0: 2, 1: 3}}, 1: {69: {0: 8, 1: 6}}}}}}}}}}, 1: {350: {0: {482: {0: {569: {0: {209: {0: {402: {0: {268: {0: {150: {0: 2, 1: 3}}, 1: {125: {0: 4, 1: 8}}}}, 1: {69: {0: {269: {0: {696: {0: 4, 1: 9}}, 1: 7}}, 1: 2}}}}, 1: {177: {0: {290: {0: {183: {0: 9, 1: 8}}, 1: {210: {0: 4, 1: 9}}}}, 1: {231: {0: 3, 1: 8}}}}}}, 1: {150: {0: {225: {0: 8, 1: 3}}, 1: 3}}}}, 1: {431: {0: {404: {0: {668: {0: 8, 1: 9}}, 1: {160: {0: 7, 1: 4}}}}, 1: {183: {0: 4, 1: {121: {0: 9, 1: 2}}}}}}}}, 1: {377: {0: {328: {0: 3, 1: {199: {0: 5, 1: 3}}}}, 1: {590: {0: {156: {0: 9, 1: 8}}, 1: {127: {0: {158: {0: 1, 1: 5}}, 1: 6}}}}}}}}}}, 1: {588: {0: {154: {0: {209: {0: {236: {0: {559: {0: 4, 1: 8}}, 1: {420: {0: {431: {0: {256: {0: 4, 1: {264: {0: 8, 1: 3}}}}, 1: 9}}, 1: {218: {0: 4, 1: 7}}}}}}, 1: {379: {0: {319: {0: {321: {0: {179: {0: {156: {0: 9, 1: 2}}, 1: 5}}, 1: {202: {0: 4, 1: 7}}}}, 1: 3}}, 1: {535: {0: {317: {0: {430: {0: 5, 1: 9}}, 1: {211: {0: 4, 1: 9}}}}, 1: {325: {0: 8, 1: {122: {0: 9, 1: 2}}}}}}}}}}, 1: {458: {0: {320: {0: {179: {0: 8, 1: 5}}, 1: {130: {0: 3, 1: 5}}}}, 1: {424: {0: {246: {0: 8, 1: 4}}, 1: 2}}}}}}, 1: {347: {0: {559: {0: {516: {0: {157: {0: 8, 1: 9}}, 1: 2}}, 1: 2}}, 1: {328: {0: {210: {0: 3, 1: 5}}, 1: {179: {0: 0, 1: 2}}}}}}}}}}, 1: {211: {0: {155: {0: {237: {0: {182: {0: 4, 1: {482: {0: {258: {0: {208: {0: 3, 1: 9}}, 1: 9}}, 1: {395: {0: 8, 1: {178: {0: 7, 1: 4}}}}}}}}, 1: {234: {0: {212: {0: {207: {0: {104: {0: 4, 1: 2}}, 1: {204: {0: 3, 1: 9}}}}, 1: {185: {0: {316: {0: 9, 1: 4}}, 1: {258: {0: 4, 1: 9}}}}}}, 1: {510: {0: {437: {0: 9, 1: 2}}, 1: {341: {0: 7, 1: {422: {0: 8, 1: 9}}}}}}}}}}, 1: {483: {0: {452: {0: {232: {0: {152: {0: {374: {0: 4, 1: {97: {0: 9, 1: 3}}}}, 1: {206: {0: 3, 1: 5}}}}, 1: {401: {0: {205: {0: 8, 1: 5}}, 1: {260: {0: 9, 1: 5}}}}}}, 1: {588: {0: {155: {0: 4, 1: 8}}, 1: 2}}}}, 1: {102: {0: 8, 1: 2}}}}}}, 1: {484: {0: {235: {0: {423: {0: {152: {0: {615: {0: {455: {0: {148: {0: 9, 1: 5}}, 1: {615: {0: {209: {0: {698: {0: 4, 1: 9}}, 1: {290: {0: {423: {0: 8, 1: 9}}, 1: 4}}}}, 1: {187: {0: 9, 1: 8}}}}}}, 1: {481: {0: {557: {0: 3, 1: 5}}, 1: {129: {0: 9, 1: 8}}}}}}, 1: {370: {0: {449: {0: 3, 1: 2}}, 1: {238: {0: 9, 1: 8}}}}}}, 1: {457: {0: {147: {0: 3, 1: {94: {0: 5, 1: 2}}}}, 1: {701: {0: {150: {0: 4, 1: 2}}, 1: {182: {0: 9, 1: 4}}}}}}}}, 1: {614: {0: {624: {0: 9, 1: {675: {0: {317: {0: {341: {0: 4, 1: 9}}, 1: 4}}, 1: {258: {0: 5, 1: 8}}}}}}, 1: {128: {0: 3, 1: 2}}}}}}, 1: {651: {0: {212: {0: {455: {0: {397: {0: {181: {0: 9, 1: 7}}, 1: {177: {0: 4, 1: 2}}}}, 1: {157: {0: {179: {0: 4, 1: 8}}, 1: {156: {0: 2, 1: 8}}}}}}, 1: {207: {0: {670: {0: {182: {0: {399: {0: 8, 1: {186: {0: 9, 1: 8}}}}, 1: 9}}, 1: {351: {0: {208: {0: 9, 1: 7}}, 1: 9}}}}, 1: {404: {0: 8, 1: 7}}}}}}, 1: 8}}}}}}}}}}, 1: {211: {0: {266: {0: {539: {0: {155: {0: 4, 1: {534: {0: {617: {0: {184: {0: {561: {0: {156: {0: {209: {0: {178: {0: {216: {0: {449: {0: {229: {0: 6, 1: 4}}, 1: 4}}, 1: 5}}, 1: {155: {0: {125: {0: 9, 1: 4}}, 1: {127: {0: 6, 1: 8}}}}}}, 1: 9}}, 1: {212: {0: 5, 1: {154: {0: 9, 1: 3}}}}}}, 1: 6}}, 1: {128: {0: {321: {0: {317: {0: {239: {0: {238: {0: 5, 1: 9}}, 1: {121: {0: 9, 1: {145: {0: 3, 1: 2}}}}}}, 1: {226: {0: 3, 1: 8}}}}, 1: {638: {0: {535: {0: 9, 1: {178: {0: {155: {0: 7, 1: 9}}, 1: 8}}}}, 1: {121: {0: 3, 1: 2}}}}}}, 1: {488: {0: {181: {0: 0, 1: 8}}, 1: {126: {0: 4, 1: 6}}}}}}}}, 1: {287: {0: {647: {0: {370: {0: {666: {0: 2, 1: 3}}, 1: 3}}, 1: {128: {0: 5, 1: 3}}}}, 1: {510: {0: {423: {0: 5, 1: {159: {0: 9, 1: 5}}}}, 1: {152: {0: 2, 1: 8}}}}}}}}, 1: {680: {0: {265: {0: {288: {0: 2, 1: 8}}, 1: 4}}, 1: 8}}}}}}, 1: {620: {0: {590: {0: {296: {0: {271: {0: 6, 1: {205: {0: 4, 1: 8}}}}, 1: {155: {0: {404: {0: {214: {0: {271: {0: 6, 1: 5}}, 1: 4}}, 1: 4}}, 1: {593: {0: {128: {0: 8, 1: 4}}, 1: {125: {0: 0, 1: 2}}}}}}}}, 1: {515: {0: {181: {0: {377: {0: 5, 1: {185: {0: 4, 1: 9}}}}, 1: {179: {0: 2, 1: 8}}}}, 1: {647: {0: {292: {0: 2, 1: 8}}, 1: 8}}}}}}, 1: {156: {0: {485: {0: {374: {0: {98: {0: 5, 1: 2}}, 1: {154: {0: 8, 1: 1}}}}, 1: {210: {0: 4, 1: 9}}}}, 1: {617: {0: {184: {0: {100: {0: {152: {0: 4, 1: 7}}, 1: 6}}, 1: 8}}, 1: {315: {0: 2, 1: {123: {0: 6, 1: 5}}}}}}}}}}}}, 1: {406: {0: {377: {0: {434: {0: {290: {0: {269: {0: {346: {0: {185: {0: {444: {0: {132: {0: 5, 1: 6}}, 1: 2}}, 1: {104: {0: 3, 1: 6}}}}, 1: {188: {0: 3, 1: 8}}}}, 1: 5}}, 1: {490: {0: 5, 1: {202: {0: {179: {0: 9, 1: 0}}, 1: {190: {0: 2, 1: 5}}}}}}}}, 1: {398: {0: {340: {0: {235: {0: 2, 1: {231: {0: 9, 1: 7}}}}, 1: {404: {0: {213: {0: {216: {0: 9, 1: 5}}, 1: 4}}, 1: 9}}}}, 1: {285: {0: {425: {0: 0, 1: 4}}, 1: {297: {0: {176: {0: {186: {0: 3, 1: 8}}, 1: 5}}, 1: 7}}}}}}}}, 1: {484: {0: {373: {0: {480: {0: {147: {0: 9, 1: 3}}, 1: {178: {0: {182: {0: 2, 1: 4}}, 1: 9}}}}, 1: {215: {0: {130: {0: 4, 1: 3}}, 1: 8}}}}, 1: {397: {0: {265: {0: {154: {0: 4, 1: 9}}, 1: {400: {0: 7, 1: {294: {0: 2, 1: {177: {0: 9, 1: 7}}}}}}}}, 1: {297: {0: {206: {0: 4, 1: 9}}, 1: {160: {0: 9, 1: 2}}}}}}}}}}, 1: {397: {0: {258: {0: {504: {0: {297: {0: {263: {0: {482: {0: {177: {0: 9, 1: 7}}, 1: {293: {0: {374: {0: 4, 1: {264: {0: 4, 1: 9}}}}, 1: {215: {0: 4, 1: 7}}}}}}, 1: {613: {0: {368: {0: {365: {0: {153: {0: {210: {0: 7, 1: 4}}, 1: 4}}, 1: 9}}, 1: {456: {0: 9, 1: {265: {0: {237: {0: 7, 1: 5}}, 1: 4}}}}}}, 1: 5}}}}, 1: {163: {0: {591: {0: {284: {0: 9, 1: {236: {0: 7, 1: 9}}}}, 1: {210: {0: {154: {0: 7, 1: 8}}, 1: {212: {0: 9, 1: 3}}}}}}, 1: {161: {0: 4, 1: 8}}}}}}, 1: {347: {0: {313: {0: {161: {0: 2, 1: 8}}, 1: 9}}, 1: 4}}}}, 1: {545: {0: {394: {0: {394: {0: 7, 1: 9}}, 1: 9}}, 1: {238: {0: 2, 1: 3}}}}}}, 1: {236: {0: {353: {0: {396: {0: {457: {0: {205: {0: 9, 1: {128: {0: 4, 1: 3}}}}, 1: {271: {0: 4, 1: 9}}}}, 1: {180: {0: {381: {0: 4, 1: {211: {0: 2, 1: 4}}}}, 1: {154: {0: 9, 1: 8}}}}}}, 1: {274: {0: 9, 1: 8}}}}, 1: {218: {0: {434: {0: {615: {0: 9, 1: 8}}, 1: {514: {0: {181: {0: 7, 1: 4}}, 1: 9}}}}, 1: {238: {0: 4, 1: {213: {0: 5, 1: 8}}}}}}}}}}}}}}, 1: {379: {0: {539: {0: {380: {0: {351: {0: {216: {0: {320: {0: {534: {0: {642: {0: {343: {0: {371: {0: {585: {0: {429: {0: {399: {0: {264: {0: 5, 1: {243: {0: 9, 1: 5}}}}, 1: 9}}, 1: {158: {0: 9, 1: 5}}}}, 1: {206: {0: 2, 1: 9}}}}, 1: {205: {0: {531: {0: 5, 1: 1}}, 1: {151: {0: {178: {0: 7, 1: 9}}, 1: 2}}}}}}, 1: {510: {0: {394: {0: {641: {0: 9, 1: {155: {0: 4, 1: 5}}}}, 1: {101: {0: {208: {0: {211: {0: 9, 1: 5}}, 1: 5}}, 1: 6}}}}, 1: {455: {0: {288: {0: 4, 1: 5}}, 1: {155: {0: {269: {0: 9, 1: 8}}, 1: {152: {0: 4, 1: 9}}}}}}}}}}, 1: {149: {0: 5, 1: {175: {0: 5, 1: 3}}}}}}, 1: {126: {0: 6, 1: 0}}}}, 1: {206: {0: {264: {0: 3, 1: {616: {0: {151: {0: {484: {0: 4, 1: 2}}, 1: 8}}, 1: {558: {0: {671: {0: 5, 1: 9}}, 1: {103: {0: 0, 1: 6}}}}}}}}, 1: {508: {0: 3, 1: {512: {0: {178: {0: 5, 1: 3}}, 1: 2}}}}}}}}, 1: {355: {0: 5, 1: {158: {0: {187: {0: 2, 1: {159: {0: 9, 1: 4}}}}, 1: 0}}}}}}, 1: {371: {0: {209: {0: {293: {0: {429: {0: {185: {0: 2, 1: 9}}, 1: {207: {0: 7, 1: 3}}}}, 1: {450: {0: {93: {0: 7, 1: 2}}, 1: {240: {0: 4, 1: 9}}}}}}, 1: {536: {0: {518: {0: {261: {0: {397: {0: {209: {0: 9, 1: 7}}, 1: 3}}, 1: {616: {0: 9, 1: {207: {0: 9, 1: 3}}}}}}, 1: {149: {0: 2, 1: 8}}}}, 1: {428: {0: 3, 1: {98: {0: 7, 1: 1}}}}}}}}, 1: {430: {0: {266: {0: {185: {0: 2, 1: 8}}, 1: {152: {0: 5, 1: 9}}}}, 1: {209: {0: 4, 1: {448: {0: {155: {0: 9, 1: 3}}, 1: {182: {0: 9, 1: 4}}}}}}}}}}}}, 1: {506: {0: {240: {0: {213: {0: {537: {0: {447: {0: {290: {0: 9, 1: 3}}, 1: 4}}, 1: {702: {0: {187: {0: 4, 1: 9}}, 1: 9}}}}, 1: {458: {0: {209: {0: {184: {0: 5, 1: 9}}, 1: 8}}, 1: 9}}}}, 1: {476: {0: {374: {0: 9, 1: {262: {0: {152: {0: {178: {0: 4, 1: 8}}, 1: 0}}, 1: 9}}}}, 1: {341: {0: {205: {0: {98: {0: {155: {0: 5, 1: 4}}, 1: 2}}, 1: 7}}, 1: 9}}}}}}, 1: {319: {0: {342: {0: {697: {0: 2, 1: 7}}, 1: {183: {0: 8, 1: 9}}}}, 1: {238: {0: {134: {0: 8, 1: 5}}, 1: 4}}}}}}}}, 1: {347: {0: {327: {0: {349: {0: {405: {0: {155: {0: {298: {0: {318: {0: 5, 1: 0}}, 1: 9}}, 1: {95: {0: 6, 1: 2}}}}, 1: {488: {0: {291: {0: {152: {0: 8, 1: 0}}, 1: 9}}, 1: {155: {0: {124: {0: 2, 1: 0}}, 1: 6}}}}}}, 1: {324: {0: {153: {0: {148: {0: 4, 1: 9}}, 1: 2}}, 1: {207: {0: 8, 1: {239: {0: 8, 1: 7}}}}}}}}, 1: {557: {0: {178: {0: {131: {0: 9, 1: 2}}, 1: {153: {0: 8, 1: 3}}}}, 1: 2}}}}, 1: {240: {0: {179: {0: {616: {0: {650: {0: 6, 1: {126: {0: {126: {0: 5, 1: 1}}, 1: 6}}}}, 1: {156: {0: 4, 1: {129: {0: 5, 1: 6}}}}}}, 1: {174: {0: {189: {0: 8, 1: 5}}, 1: 2}}}}, 1: {457: {0: {241: {0: {260: {0: 2, 1: 0}}, 1: 5}}, 1: {373: {0: {154: {0: {181: {0: 4, 1: 9}}, 1: 6}}, 1: 8}}}}}}}}}}, 1: {156: {0: {315: {0: {317: {0: {367: {0: {342: {0: {338: {0: {500: {0: {481: {0: {339: {0: {509: {0: {207: {0: {320: {0: {184: {0: {99: {0: 2, 1: 6}}, 1: 8}}, 1: {155: {0: 3, 1: 4}}}}, 1: {283: {0: 7, 1: 3}}}}, 1: {255: {0: 3, 1: {121: {0: 9, 1: 2}}}}}}, 1: 9}}, 1: {428: {0: {424: {0: {239: {0: 2, 1: 7}}, 1: {557: {0: 3, 1: 7}}}}, 1: {182: {0: {235: {0: {180: {0: {156: {0: 7, 1: 4}}, 1: 9}}, 1: 7}}, 1: {345: {0: {154: {0: {555: {0: {233: {0: 9, 1: 3}}, 1: {202: {0: 9, 1: 7}}}}, 1: {172: {0: 2, 1: 3}}}}, 1: {209: {0: {149: {0: 2, 1: 7}}, 1: {323: {0: 7, 1: 3}}}}}}}}}}}}, 1: {618: {0: {292: {0: 2, 1: 8}}, 1: {181: {0: 7, 1: 3}}}}}}, 1: {673: {0: 9, 1: 3}}}}, 1: {177: {0: {529: {0: 9, 1: 8}}, 1: {158: {0: {177: {0: 4, 1: 7}}, 1: 5}}}}}}, 1: {647: {0: {232: {0: {293: {0: 9, 1: {182: {0: {181: {0: 9, 1: 4}}, 1: 4}}}}, 1: 9}}, 1: {509: {0: 9, 1: {202: {0: 8, 1: {151: {0: 7, 1: 9}}}}}}}}}}, 1: {558: {0: {210: {0: {99: {0: {393: {0: {263: {0: 4, 1: {153: {0: 9, 1: {152: {0: 4, 1: 0}}}}}}, 1: 4}}, 1: 6}}, 1: {537: {0: {644: {0: {421: {0: {482: {0: 9, 1: {321: {0: 4, 1: {184: {0: 9, 1: 4}}}}}}, 1: {701: {0: {454: {0: 9, 1: 4}}, 1: {186: {0: 9, 1: 4}}}}}}, 1: {162: {0: {156: {0: 3, 1: 0}}, 1: 5}}}}, 1: {459: {0: {344: {0: {210: {0: {296: {0: {418: {0: 9, 1: 4}}, 1: 4}}, 1: 9}}, 1: {211: {0: {232: {0: 6, 1: 4}}, 1: {181: {0: 7, 1: 8}}}}}}, 1: {376: {0: 4, 1: {123: {0: 9, 1: 0}}}}}}}}}}, 1: {426: {0: 2, 1: 8}}}}}}, 1: 9}}, 1: {538: {0: {207: {0: {619: {0: {297: {0: 4, 1: {237: {0: 4, 1: {128: {0: 2, 1: 3}}}}}}, 1: {541: {0: {407: {0: {184: {0: 4, 1: 9}}, 1: 4}}, 1: {129: {0: {123: {0: {153: {0: 3, 1: 8}}, 1: 2}}, 1: {100: {0: 5, 1: 6}}}}}}}}, 1: {643: {0: {373: {0: {263: {0: {430: {0: {153: {0: {154: {0: 5, 1: 9}}, 1: 8}}, 1: {402: {0: 2, 1: 9}}}}, 1: 4}}, 1: {376: {0: {100: {0: 5, 1: 2}}, 1: 8}}}}, 1: {324: {0: {259: {0: 5, 1: {151: {0: 8, 1: 9}}}}, 1: 3}}}}}}, 1: {589: {0: {352: {0: {268: {0: 6, 1: 4}}, 1: {488: {0: {482: {0: {129: {0: 9, 1: 2}}, 1: 8}}, 1: {129: {0: 4, 1: {101: {0: 2, 1: 6}}}}}}}}, 1: {343: {0: 2, 1: {214: {0: {129: {0: 8, 1: 2}}, 1: 9}}}}}}}}}}}}}}}}, 1: {242: {0: {653: {0: {295: {0: {243: {0: {267: {0: 6, 1: {339: {0: {289: {0: {260: {0: {235: {0: 2, 1: {176: {0: 2, 1: 7}}}}, 1: {621: {0: {616: {0: {365: {0: 2, 1: 9}}, 1: 8}}, 1: 0}}}}, 1: {347: {0: 6, 1: {266: {0: 4, 1: {154: {0: 7, 1: 0}}}}}}}}, 1: {460: {0: {376: {0: {94: {0: 0, 1: 6}}, 1: 7}}, 1: 9}}}}}}, 1: {185: {0: {128: {0: {593: {0: {210: {0: {371: {0: 4, 1: {154: {0: 5, 1: 2}}}}, 1: {312: {0: {150: {0: {183: {0: 5, 1: 7}}, 1: 8}}, 1: {188: {0: 9, 1: 4}}}}}}, 1: {241: {0: {158: {0: 6, 1: {129: {0: 8, 1: 0}}}}, 1: {96: {0: 4, 1: 8}}}}}}, 1: {407: {0: {287: {0: 2, 1: {127: {0: 8, 1: 6}}}}, 1: 0}}}}, 1: {488: {0: {507: {0: {427: {0: {288: {0: {155: {0: 7, 1: 2}}, 1: {180: {0: 8, 1: 0}}}}, 1: {189: {0: 8, 1: 9}}}}, 1: {350: {0: {130: {0: 0, 1: 6}}, 1: {148: {0: 2, 1: 7}}}}}}, 1: {159: {0: {369: {0: 9, 1: {127: {0: {156: {0: 2, 1: 4}}, 1: 0}}}}, 1: {651: {0: {456: {0: {486: {0: 0, 1: 2}}, 1: 2}}, 1: {128: {0: 9, 1: 6}}}}}}}}}}}}, 1: {487: {0: {239: {0: {481: {0: {595: {0: {298: {0: {377: {0: {243: {0: {146: {0: 0, 1: 5}}, 1: {162: {0: 5, 1: 7}}}}, 1: 9}}, 1: {356: {0: 5, 1: 0}}}}, 1: {566: {0: {126: {0: 8, 1: 5}}, 1: {231: {0: 3, 1: {65: {0: 2, 1: 6}}}}}}}}, 1: {565: {0: {210: {0: 0, 1: {154: {0: 8, 1: 9}}}}, 1: {438: {0: {295: {0: {619: {0: {74: {0: 2, 1: 6}}, 1: {97: {0: 5, 1: 2}}}}, 1: {432: {0: {261: {0: 6, 1: 0}}, 1: {98: {0: 5, 1: 0}}}}}}, 1: 6}}}}}}, 1: {432: {0: {324: {0: {314: {0: {377: {0: {564: {0: 0, 1: 2}}, 1: {210: {0: 2, 1: 3}}}}, 1: {184: {0: 0, 1: 9}}}}, 1: {93: {0: {293: {0: 3, 1: 0}}, 1: 6}}}}, 1: {346: {0: {259: {0: {508: {0: 2, 1: {266: {0: 2, 1: {291: {0: 2, 1: 7}}}}}}, 1: {292: {0: 2, 1: 9}}}}, 1: {129: {0: {127: {0: 3, 1: 0}}, 1: 6}}}}}}}}, 1: {372: {0: {299: {0: {395: {0: {649: {0: 2, 1: {152: {0: 7, 1: 2}}}}, 1: {425: {0: {177: {0: 9, 1: {129: {0: 6, 1: 4}}}}, 1: 2}}}}, 1: {287: {0: {92: {0: 5, 1: 6}}, 1: {242: {0: 2, 1: 7}}}}}}, 1: {482: {0: {240: {0: {262: {0: 5, 1: 7}}, 1: {158: {0: {261: {0: 2, 1: {40: {0: 8, 1: 0}}}}, 1: {104: {0: 4, 1: 6}}}}}}, 1: {377: {0: {562: {0: 4, 1: 6}}, 1: {677: {0: {230: {0: 4, 1: 8}}, 1: 9}}}}}}}}}}}}, 1: {459: {0: {321: {0: {514: {0: {402: {0: {453: {0: {176: {0: {652: {0: {430: {0: {130: {0: 0, 1: 5}}, 1: {185: {0: 9, 1: 8}}}}, 1: 8}}, 1: {204: {0: 3, 1: {127: {0: 2, 1: 5}}}}}}, 1: 0}}, 1: {509: {0: 5, 1: {130: {0: 8, 1: 6}}}}}}, 1: {295: {0: {242: {0: {377: {0: 6, 1: {153: {0: 4, 1: {121: {0: 6, 1: 2}}}}}}, 1: {561: {0: {185: {0: 5, 1: 9}}, 1: {156: {0: {206: {0: 8, 1: 0}}, 1: 6}}}}}}, 1: {234: {0: {128: {0: 2, 1: 5}}, 1: 7}}}}}}, 1: {482: {0: {265: {0: {507: {0: {321: {0: {260: {0: 3, 1: 5}}, 1: 5}}, 1: {343: {0: 9, 1: {123: {0: 6, 1: 5}}}}}}, 1: 3}}, 1: {427: {0: {374: {0: {123: {0: 5, 1: 3}}, 1: {158: {0: 8, 1: 6}}}}, 1: {268: {0: {488: {0: {511: {0: {152: {0: 8, 1: 2}}, 1: 6}}, 1: {459: {0: {318: {0: 0, 1: 6}}, 1: 0}}}}, 1: {150: {0: 0, 1: 8}}}}}}}}}}, 1: {650: {0: {149: {0: {454: {0: {377: {0: {453: {0: {231: {0: {158: {0: 0, 1: 5}}, 1: 8}}, 1: {509: {0: {131: {0: 8, 1: 6}}, 1: 6}}}}, 1: {434: {0: 8, 1: {153: {0: 9, 1: 7}}}}}}, 1: {157: {0: {188: {0: 7, 1: 4}}, 1: {323: {0: 6, 1: 9}}}}}}, 1: {152: {0: {122: {0: 5, 1: 4}}, 1: 2}}}}, 1: {431: {0: {324: {0: {430: {0: {155: {0: 3, 1: 9}}, 1: {573: {0: {176: {0: 8, 1: 2}}, 1: 2}}}}, 1: 2}}, 1: {353: {0: {178: {0: {479: {0: {652: {0: 8, 1: 2}}, 1: {160: {0: {156: {0: 5, 1: 8}}, 1: 6}}}}, 1: {371: {0: 2, 1: {150: {0: 8, 1: 5}}}}}}, 1: 8}}}}}}}}}}, 1: {460: {0: {515: {0: {377: {0: {622: {0: {460: {0: {321: {0: {401: {0: {678: {0: {560: {0: {514: {0: 0, 1: {208: {0: {123: {0: 2, 1: 4}}, 1: 9}}}}, 1: 0}}, 1: {182: {0: 5, 1: {213: {0: 9, 1: 0}}}}}}, 1: {153: {0: {153: {0: 5, 1: 9}}, 1: {153: {0: 1, 1: 8}}}}}}, 1: {243: {0: {316: {0: {93: {0: 8, 1: 6}}, 1: {151: {0: 0, 1: 5}}}}, 1: 5}}}}, 1: {288: {0: {267: {0: {295: {0: 6, 1: {156: {0: 0, 1: 8}}}}, 1: {178: {0: 5, 1: 3}}}}, 1: {233: {0: 9, 1: {178: {0: 7, 1: {94: {0: 5, 1: 4}}}}}}}}}}, 1: 0}}, 1: {484: {0: {352: {0: {245: {0: 8, 1: 5}}, 1: {288: {0: 3, 1: {92: {0: 8, 1: 6}}}}}}, 1: {648: {0: {153: {0: 7, 1: 2}}, 1: 8}}}}}}, 1: {592: {0: {462: {0: {219: {0: {238: {0: {397: {0: {240: {0: 2, 1: {187: {0: {180: {0: 0, 1: 9}}, 1: 3}}}}, 1: {129: {0: 4, 1: 6}}}}, 1: {457: {0: {350: {0: {600: {0: 0, 1: 9}}, 1: 7}}, 1: {230: {0: 8, 1: 2}}}}}}, 1: 5}}, 1: {212: {0: {453: {0: {325: {0: {295: {0: {124: {0: 5, 1: 2}}, 1: {145: {0: 4, 1: 6}}}}, 1: {154: {0: 7, 1: {125: {0: 9, 1: 2}}}}}}, 1: 4}}, 1: {322: {0: {541: {0: {564: {0: {286: {0: {187: {0: 2, 1: 9}}, 1: 9}}, 1: {592: {0: {184: {0: 7, 1: 9}}, 1: 2}}}}, 1: {439: {0: 9, 1: 7}}}}, 1: {679: {0: {231: {0: {242: {0: 4, 1: 5}}, 1: 7}}, 1: {157: {0: 9, 1: 4}}}}}}}}}}, 1: {401: {0: {154: {0: {156: {0: {204: {0: 5, 1: 2}}, 1: {102: {0: {153: {0: 8, 1: 6}}, 1: 4}}}}, 1: {397: {0: 2, 1: {126: {0: 2, 1: 0}}}}}}, 1: {188: {0: {212: {0: {96: {0: {154: {0: 0, 1: 9}}, 1: 2}}, 1: 0}}, 1: {236: {0: 6, 1: {163: {0: 8, 1: 5}}}}}}}}}}}}, 1: {402: {0: {155: {0: {479: {0: {672: {0: {186: {0: {561: {0: {533: {0: {424: {0: {239: {0: 9, 1: 7}}, 1: {68: {0: 9, 1: 6}}}}, 1: {651: {0: {186: {0: 2, 1: 7}}, 1: 9}}}}, 1: {426: {0: {567: {0: {292: {0: {559: {0: {212: {0: 7, 1: 8}}, 1: {694: {0: {343: {0: 2, 1: 0}}, 1: 7}}}}, 1: 7}}, 1: 2}}, 1: {620: {0: {98: {0: {198: {0: 5, 1: 7}}, 1: 2}}, 1: 8}}}}}}, 1: {649: {0: {371: {0: {210: {0: {347: {0: {97: {0: 9, 1: 2}}, 1: 1}}, 1: {538: {0: 7, 1: 2}}}}, 1: {344: {0: 8, 1: {184: {0: 4, 1: {103: {0: 9, 1: 6}}}}}}}}, 1: {134: {0: 8, 1: 6}}}}}}, 1: {297: {0: {670: {0: {235: {0: {159: {0: 9, 1: 1}}, 1: 8}}, 1: {269: {0: {186: {0: 2, 1: 9}}, 1: 7}}}}, 1: 7}}}}, 1: {210: {0: {264: {0: {294: {0: {153: {0: {98: {0: 0, 1: 2}}, 1: 4}}, 1: 4}}, 1: {459: {0: {350: {0: 5, 1: {214: {0: 3, 1: {185: {0: 9, 1: 2}}}}}}, 1: {317: {0: 7, 1: {185: {0: 0, 1: {132: {0: 9, 1: 6}}}}}}}}}}, 1: {314: {0: {349: {0: {452: {0: {129: {0: 9, 1: 2}}, 1: {591: {0: 2, 1: {102: {0: 3, 1: 6}}}}}}, 1: {567: {0: {233: {0: {157: {0: 9, 1: 8}}, 1: 7}}, 1: 2}}}}, 1: {562: {0: {176: {0: 9, 1: 5}}, 1: {206: {0: {257: {0: 9, 1: 8}}, 1: 0}}}}}}}}}}, 1: {398: {0: {151: {0: {350: {0: {398: {0: {127: {0: {94: {0: {126: {0: 7, 1: 6}}, 1: 3}}, 1: 2}}, 1: 8}}, 1: {347: {0: {395: {0: {149: {0: 2, 1: {123: {0: 7, 1: 2}}}}, 1: 8}}, 1: 8}}}}, 1: 2}}, 1: {479: {0: {98: {0: 8, 1: 2}}, 1: {590: {0: {420: {0: 9, 1: 2}}, 1: {157: {0: {126: {0: 4, 1: 0}}, 1: 6}}}}}}}}}}, 1: {480: {0: {455: {0: {649: {0: {482: {0: {236: {0: {72: {0: 6, 1: 2}}, 1: 5}}, 1: {642: {0: {409: {0: 8, 1: {147: {0: {177: {0: 8, 1: 7}}, 1: 3}}}}, 1: {212: {0: {160: {0: 5, 1: {160: {0: 4, 1: 8}}}}, 1: 9}}}}}}, 1: 8}}, 1: {289: {0: {179: {0: {322: {0: {94: {0: 6, 1: 2}}, 1: {183: {0: 4, 1: {100: {0: 7, 1: 2}}}}}}, 1: {511: {0: {175: {0: 8, 1: 3}}, 1: {152: {0: 8, 1: 2}}}}}}, 1: {507: {0: {152: {0: 9, 1: 5}}, 1: 8}}}}}}, 1: {320: {0: {216: {0: {317: {0: 2, 1: {152: {0: 3, 1: 8}}}}, 1: {129: {0: {152: {0: 4, 1: 5}}, 1: 2}}}}, 1: {324: {0: {515: {0: 5, 1: {136: {0: 6, 1: 8}}}}, 1: {211: {0: 4, 1: 0}}}}}}}}}}}}}}}}, 1: {461: {0: {426: {0: {427: {0: {424: {0: {322: {0: {374: {0: {512: {0: {507: {0: {423: {0: {474: {0: {266: {0: {125: {0: {404: {0: {353: {0: {327: {0: {239: {0: 5, 1: {101: {0: {149: {0: 8, 1: 5}}, 1: 1}}}}, 1: 0}}, 1: {182: {0: 8, 1: 2}}}}, 1: {531: {0: {160: {0: {160: {0: 3, 1: 8}}, 1: 5}}, 1: {236: {0: 2, 1: {183: {0: 8, 1: 7}}}}}}}}, 1: {289: {0: {99: {0: {73: {0: 2, 1: 1}}, 1: {97: {0: 6, 1: 5}}}}, 1: 5}}}}, 1: {376: {0: {183: {0: 5, 1: {157: {0: 3, 1: 5}}}}, 1: {294: {0: 3, 1: {99: {0: 8, 1: 1}}}}}}}}, 1: {378: {0: {320: {0: 0, 1: {184: {0: 5, 1: 2}}}}, 1: {324: {0: {97: {0: 5, 1: 6}}, 1: 3}}}}}}, 1: {102: {0: 0, 1: 6}}}}, 1: {593: {0: {179: {0: {352: {0: 1, 1: 8}}, 1: {285: {0: 2, 1: 8}}}}, 1: 2}}}}, 1: {376: {0: 2, 1: {478: {0: {242: {0: {587: {0: {209: {0: 1, 1: 9}}, 1: {124: {0: {99: {0: 7, 1: 3}}, 1: 2}}}}, 1: {216: {0: 3, 1: 5}}}}, 1: {158: {0: 2, 1: 8}}}}}}}}, 1: {479: {0: {451: {0: {127: {0: {642: {0: 5, 1: {298: {0: {301: {0: 5, 1: 8}}, 1: {150: {0: 8, 1: 9}}}}}}, 1: {586: {0: {127: {0: 3, 1: 2}}, 1: {97: {0: 5, 1: 2}}}}}}, 1: {72: {0: 0, 1: 6}}}}, 1: {454: {0: {184: {0: {125: {0: 5, 1: 4}}, 1: {346: {0: 8, 1: 0}}}}, 1: {102: {0: {120: {0: 8, 1: 2}}, 1: 6}}}}}}}}, 1: {268: {0: {266: {0: {268: {0: 5, 1: {271: {0: {344: {0: {155: {0: {98: {0: 9, 1: 3}}, 1: 2}}, 1: 3}}, 1: 5}}}}, 1: {152: {0: {450: {0: {97: {0: {542: {0: {98: {0: 5, 1: {99: {0: 3, 1: 5}}}}, 1: {153: {0: 3, 1: 5}}}}, 1: {96: {0: 0, 1: 3}}}}, 1: {450: {0: {128: {0: 5, 1: 2}}, 1: {560: {0: 0, 1: 6}}}}}}, 1: {427: {0: {234: {0: {258: {0: 3, 1: 5}}, 1: {173: {0: 5, 1: 3}}}}, 1: {97: {0: 8, 1: 1}}}}}}}}, 1: {125: {0: {424: {0: {216: {0: {285: {0: {243: {0: {286: {0: {295: {0: 3, 1: 5}}, 1: {233: {0: {617: {0: {239: {0: 5, 1: 3}}, 1: 3}}, 1: 5}}}}, 1: 5}}, 1: {294: {0: {178: {0: 3, 1: {125: {0: 9, 1: 2}}}}, 1: {149: {0: 5, 1: 9}}}}}}, 1: {352: {0: {127: {0: {270: {0: 5, 1: 3}}, 1: 3}}, 1: 2}}}}, 1: {158: {0: {149: {0: {132: {0: 5, 1: 0}}, 1: {122: {0: 3, 1: 2}}}}, 1: {105: {0: 0, 1: 6}}}}}}, 1: 3}}}}}}, 1: {409: {0: {407: {0: 0, 1: 6}}, 1: {233: {0: {431: {0: 3, 1: {319: {0: 2, 1: {131: {0: 3, 1: 5}}}}}}, 1: {209: {0: {126: {0: 8, 1: 6}}, 1: {292: {0: 9, 1: 0}}}}}}}}}}, 1: {650: {0: {480: {0: {480: {0: {385: {0: {185: {0: {176: {0: 5, 1: 3}}, 1: {346: {0: {239: {0: 2, 1: {159: {0: 9, 1: 3}}}}, 1: 5}}}}, 1: {131: {0: {266: {0: 8, 1: 0}}, 1: {77: {0: 5, 1: 6}}}}}}, 1: {129: {0: {209: {0: {122: {0: 5, 1: {122: {0: 4, 1: 0}}}}, 1: 8}}, 1: {123: {0: 6, 1: 2}}}}}}, 1: {243: {0: {269: {0: {217: {0: {149: {0: {615: {0: {517: {0: 6, 1: {261: {0: {151: {0: 2, 1: 8}}, 1: 6}}}}, 1: {206: {0: {317: {0: {186: {0: {430: {0: 0, 1: 6}}, 1: 0}}, 1: 6}}, 1: {143: {0: 8, 1: 2}}}}}}, 1: {284: {0: 2, 1: 3}}}}, 1: {136: {0: 0, 1: 4}}}}, 1: {372: {0: {343: {0: 2, 1: {94: {0: 0, 1: 6}}}}, 1: {599: {0: 0, 1: {97: {0: {125: {0: 4, 1: 8}}, 1: 0}}}}}}}}, 1: {373: {0: {432: {0: {299: {0: {93: {0: {102: {0: 3, 1: 4}}, 1: 2}}, 1: 0}}, 1: {266: {0: 2, 1: 0}}}}, 1: {327: {0: {588: {0: {237: {0: 4, 1: {185: {0: 5, 1: 9}}}}, 1: {123: {0: {507: {0: {669: {0: 0, 1: 8}}, 1: {431: {0: {160: {0: 5, 1: 6}}, 1: 0}}}}, 1: {100: {0: {121: {0: 8, 1: 4}}, 1: 2}}}}}}, 1: 0}}}}}}}}, 1: {508: {0: {299: {0: {535: {0: {300: {0: 5, 1: {129: {0: 0, 1: 2}}}}, 1: {156: {0: {130: {0: {151: {0: 8, 1: 5}}, 1: 0}}, 1: 3}}}}, 1: {404: {0: {150: {0: 0, 1: 3}}, 1: {150: {0: {129: {0: 5, 1: 8}}, 1: {121: {0: 9, 1: 2}}}}}}}}, 1: 0}}}}}}, 1: {434: {0: 0, 1: {345: {0: {370: {0: {346: {0: {368: {0: {295: {0: 2, 1: 5}}, 1: {150: {0: 5, 1: 9}}}}, 1: {400: {0: {132: {0: 0, 1: 6}}, 1: {159: {0: 5, 1: 4}}}}}}, 1: {400: {0: 6, 1: {175: {0: 8, 1: 2}}}}}}, 1: {243: {0: {268: {0: {449: {0: {155: {0: 0, 1: 5}}, 1: {217: {0: 6, 1: 0}}}}, 1: {242: {0: 0, 1: {128: {0: 9, 1: 4}}}}}}, 1: {354: {0: {218: {0: {187: {0: {124: {0: 9, 1: 7}}, 1: 4}}, 1: 5}}, 1: {589: {0: 9, 1: 0}}}}}}}}}}}}, 1: {347: {0: {345: {0: {346: {0: {343: {0: 2, 1: {213: {0: {504: {0: {425: {0: {463: {0: {154: {0: 8, 1: 3}}, 1: 6}}, 1: {164: {0: 5, 1: 4}}}}, 1: {296: {0: 6, 1: {121: {0: 9, 1: 6}}}}}}, 1: {590: {0: {394: {0: {186: {0: {152: {0: 9, 1: 0}}, 1: 3}}, 1: 8}}, 1: {381: {0: {160: {0: 2, 1: 8}}, 1: {206: {0: 0, 1: 9}}}}}}}}}}, 1: {351: {0: {453: {0: {620: {0: 5, 1: {485: {0: 8, 1: 5}}}}, 1: {265: {0: {236: {0: {247: {0: 6, 1: 5}}, 1: {131: {0: 2, 1: 8}}}}, 1: {507: {0: 5, 1: {95: {0: {101: {0: 8, 1: 6}}, 1: 2}}}}}}}}, 1: {372: {0: {214: {0: 8, 1: 2}}, 1: 8}}}}}}, 1: {452: {0: {510: {0: {378: {0: {407: {0: {478: {0: 5, 1: {127: {0: {104: {0: 5, 1: 8}}, 1: 6}}}}, 1: {127: {0: {240: {0: 8, 1: 3}}, 1: {184: {0: 6, 1: 2}}}}}}, 1: {270: {0: {427: {0: {130: {0: 6, 1: 2}}, 1: {318: {0: 8, 1: 9}}}}, 1: {153: {0: 9, 1: 2}}}}}}, 1: {649: {0: {372: {0: {511: {0: {101: {0: {157: {0: 9, 1: 8}}, 1: 6}}, 1: {210: {0: 8, 1: 2}}}}, 1: {236: {0: {537: {0: {130: {0: 4, 1: 5}}, 1: {290: {0: 2, 1: 8}}}}, 1: {126: {0: 8, 1: 6}}}}}}, 1: 8}}}}, 1: {242: {0: {272: {0: 6, 1: {539: {0: {209: {0: {125: {0: 4, 1: 0}}, 1: {211: {0: 8, 1: 9}}}}, 1: {130: {0: 6, 1: 0}}}}}}, 1: {209: {0: {268: {0: {65: {0: 5, 1: 2}}, 1: 4}}, 1: {258: {0: {124: {0: 9, 1: 2}}, 1: {156: {0: 0, 1: {130: {0: 8, 1: 6}}}}}}}}}}}}}}, 1: {454: {0: {510: {0: {380: {0: {378: {0: {434: {0: 5, 1: {348: {0: {129: {0: 5, 1: 2}}, 1: {104: {0: {157: {0: 3, 1: 8}}, 1: 6}}}}}}, 1: {299: {0: {96: {0: 0, 1: {122: {0: 1, 1: 2}}}}, 1: 8}}}}, 1: {130: {0: {428: {0: {268: {0: {187: {0: 6, 1: 8}}, 1: {181: {0: 7, 1: 5}}}}, 1: {92: {0: 8, 1: 2}}}}, 1: {105: {0: 6, 1: 2}}}}}}, 1: {454: {0: {648: {0: {353: {0: {481: {0: {407: {0: 5, 1: {188: {0: 8, 1: 0}}}}, 1: {488: {0: 8, 1: 6}}}}, 1: {373: {0: {537: {0: {616: {0: 7, 1: {125: {0: {125: {0: 4, 1: 8}}, 1: 3}}}}, 1: 2}}, 1: {435: {0: {323: {0: {595: {0: 8, 1: {128: {0: 2, 1: 8}}}}, 1: {221: {0: 7, 1: 4}}}}, 1: 4}}}}}}, 1: 8}}, 1: {235: {0: {354: {0: 6, 1: {155: {0: {131: {0: 8, 1: 2}}, 1: {153: {0: 6, 1: 0}}}}}}, 1: {329: {0: {155: {0: 4, 1: 2}}, 1: 8}}}}}}}}, 1: {271: {0: {218: {0: 6, 1: {300: {0: {403: {0: {128: {0: 5, 1: 6}}, 1: {245: {0: 6, 1: {164: {0: 8, 1: 4}}}}}}, 1: {396: {0: {208: {0: 2, 1: 8}}, 1: {375: {0: {567: {0: 0, 1: 2}}, 1: 4}}}}}}}}, 1: {380: {0: {351: {0: {508: {0: {271: {0: 0, 1: 5}}, 1: {216: {0: 0, 1: 6}}}}, 1: {129: {0: {424: {0: 9, 1: 4}}, 1: {128: {0: 0, 1: 2}}}}}}, 1: {429: {0: {153: {0: {510: {0: {129: {0: {153: {0: 8, 1: 0}}, 1: 9}}, 1: 0}}, 1: {127: {0: 4, 1: 2}}}}, 1: {343: {0: {214: {0: {182: {0: {161: {0: 2, 1: 4}}, 1: 8}}, 1: 2}}, 1: {184: {0: {131: {0: 8, 1: 4}}, 1: 0}}}}}}}}}}}}}}}}}}, 1: {488: {0: {512: {0: {622: {0: {353: {0: {487: {0: {323: {0: {353: {0: {508: {0: {294: {0: {322: {0: {478: {0: 5, 1: {213: {0: {450: {0: {130: {0: 5, 1: {185: {0: {97: {0: 0, 1: 5}}, 1: 6}}}}, 1: {270: {0: {239: {0: 6, 1: 8}}, 1: 4}}}}, 1: {367: {0: {240: {0: 5, 1: 8}}, 1: {298: {0: 5, 1: 9}}}}}}}}, 1: {342: {0: {558: {0: {643: {0: {368: {0: {420: {0: {343: {0: 3, 1: 9}}, 1: {207: {0: 2, 1: 9}}}}, 1: {402: {0: 9, 1: 4}}}}, 1: 3}}, 1: {154: {0: {262: {0: 5, 1: 3}}, 1: {91: {0: 8, 1: 2}}}}}}, 1: {211: {0: {181: {0: 4, 1: 9}}, 1: {482: {0: {184: {0: {154: {0: 9, 1: 5}}, 1: 8}}, 1: 9}}}}}}}}, 1: {244: {0: {509: {0: {181: {0: {188: {0: {268: {0: {476: {0: {390: {0: {422: {0: 3, 1: {100: {0: {153: {0: 3, 1: 5}}, 1: 6}}}}, 1: {75: {0: {104: {0: 2, 1: 5}}, 1: 6}}}}, 1: 6}}, 1: {310: {0: 5, 1: {235: {0: 8, 1: 0}}}}}}, 1: {188: {0: 0, 1: 5}}}}, 1: 3}}, 1: {559: {0: {266: {0: {200: {0: 1, 1: 3}}, 1: {458: {0: {153: {0: 9, 1: 4}}, 1: 3}}}}, 1: {451: {0: 5, 1: 6}}}}}}, 1: {245: {0: {183: {0: {325: {0: 5, 1: 0}}, 1: {156: {0: {236: {0: 3, 1: 5}}, 1: {152: {0: 0, 1: 8}}}}}}, 1: 5}}}}}}, 1: {427: {0: {455: {0: {150: {0: {212: {0: 5, 1: 8}}, 1: 3}}, 1: {559: {0: {93: {0: {376: {0: 8, 1: 5}}, 1: 2}}, 1: {43: {0: 1, 1: 6}}}}}}, 1: {650: {0: {150: {0: {268: {0: 6, 1: 8}}, 1: 8}}, 1: {343: {0: {158: {0: 8, 1: 6}}, 1: 5}}}}}}}}, 1: {562: {0: {395: {0: {274: {0: {210: {0: {368: {0: {206: {0: 9, 1: 8}}, 1: {432: {0: {322: {0: 4, 1: 9}}, 1: {212: {0: 7, 1: 9}}}}}}, 1: {150: {0: 9, 1: 0}}}}, 1: {207: {0: 8, 1: 3}}}}, 1: {492: {0: {679: {0: 4, 1: {216: {0: {208: {0: {155: {0: 4, 1: 9}}, 1: 9}}, 1: 4}}}}, 1: {154: {0: {201: {0: 2, 1: 5}}, 1: 8}}}}}}, 1: {621: {0: {217: {0: 2, 1: {71: {0: 3, 1: 2}}}}, 1: {180: {0: 8, 1: {123: {0: {152: {0: 5, 1: 0}}, 1: 2}}}}}}}}}}, 1: {510: {0: {649: {0: {561: {0: {348: {0: {371: {0: {395: {0: {483: {0: {428: {0: {641: {0: {155: {0: {202: {0: 9, 1: 6}}, 1: 3}}, 1: 3}}, 1: {376: {0: {447: {0: 3, 1: 2}}, 1: {147: {0: 9, 1: 4}}}}}}, 1: {674: {0: {207: {0: {152: {0: 9, 1: 1}}, 1: {209: {0: 3, 1: 7}}}}, 1: {262: {0: 9, 1: 4}}}}}}, 1: {477: {0: {293: {0: {156: {0: 9, 1: 4}}, 1: {173: {0: 4, 1: 5}}}}, 1: 2}}}}, 1: {155: {0: {205: {0: {701: {0: {507: {0: 4, 1: 9}}, 1: {346: {0: 4, 1: 9}}}}, 1: {375: {0: 9, 1: {176: {0: 7, 1: 4}}}}}}, 1: {266: {0: {95: {0: {96: {0: 5, 1: 2}}, 1: 3}}, 1: 4}}}}}}, 1: {317: {0: {484: {0: {291: {0: {314: {0: {274: {0: 3, 1: 7}}, 1: {174: {0: 9, 1: 4}}}}, 1: {242: {0: {95: {0: {171: {0: 9, 1: 3}}, 1: 5}}, 1: 8}}}}, 1: {293: {0: {263: {0: {158: {0: 3, 1: 9}}, 1: {126: {0: 9, 1: 8}}}}, 1: {321: {0: 1, 1: {154: {0: {154: {0: 9, 1: 4}}, 1: 8}}}}}}}}, 1: {591: {0: {208: {0: {153: {0: {182: {0: 7, 1: 9}}, 1: 4}}, 1: 9}}, 1: {127: {0: 3, 1: {98: {0: 8, 1: 1}}}}}}}}}}, 1: {274: {0: {481: {0: {218: {0: {403: {0: {243: {0: {182: {0: 0, 1: 3}}, 1: 5}}, 1: {103: {0: 3, 1: 5}}}}, 1: {274: {0: 5, 1: 0}}}}, 1: {243: {0: {239: {0: 2, 1: {105: {0: {123: {0: 3, 1: 5}}, 1: 6}}}}, 1: {204: {0: 8, 1: 0}}}}}}, 1: {286: {0: 5, 1: 0}}}}}}, 1: {291: {0: 3, 1: {158: {0: {506: {0: {432: {0: {560: {0: {615: {0: 9, 1: {180: {0: 3, 1: 9}}}}, 1: {177: {0: {156: {0: 9, 1: 8}}, 1: 5}}}}, 1: {483: {0: {215: {0: 3, 1: {206: {0: 3, 1: 5}}}}, 1: {204: {0: 9, 1: 3}}}}}}, 1: {185: {0: 5, 1: 8}}}}, 1: {155: {0: 0, 1: 8}}}}}}}}, 1: {650: {0: {404: {0: {595: {0: {516: {0: 1, 1: {70: {0: 3, 1: 2}}}}, 1: {206: {0: 2, 1: {97: {0: 8, 1: 6}}}}}}, 1: {511: {0: {561: {0: 8, 1: {94: {0: 7, 1: 2}}}}, 1: {180: {0: 6, 1: 2}}}}}}, 1: {562: {0: {401: {0: {348: {0: {431: {0: {154: {0: 1, 1: 2}}, 1: 8}}, 1: 8}}, 1: {537: {0: 8, 1: {594: {0: 8, 1: 3}}}}}}, 1: 3}}}}}}}}, 1: {401: {0: {269: {0: {346: {0: {232: {0: 1, 1: {621: {0: {293: {0: {151: {0: 8, 1: 9}}, 1: 2}}, 1: {125: {0: {397: {0: 7, 1: 3}}, 1: {98: {0: 1, 1: 6}}}}}}}}, 1: {292: {0: {209: {0: {536: {0: {121: {0: {127: {0: 5, 1: 2}}, 1: 1}}, 1: 4}}, 1: {644: {0: {184: {0: {151: {0: 9, 1: 8}}, 1: 8}}, 1: {238: {0: {184: {0: 4, 1: 9}}, 1: 5}}}}}}, 1: {347: {0: {156: {0: 5, 1: 4}}, 1: {678: {0: 1, 1: {149: {0: 9, 1: 8}}}}}}}}}}, 1: {401: {0: {649: {0: {211: {0: {93: {0: 5, 1: 6}}, 1: {209: {0: {155: {0: 7, 1: 1}}, 1: 9}}}}, 1: {180: {0: {343: {0: 7, 1: {242: {0: 4, 1: 7}}}}, 1: {155: {0: {177: {0: 1, 1: 3}}, 1: {152: {0: 7, 1: 8}}}}}}}}, 1: {507: {0: {561: {0: {403: {0: {215: {0: 3, 1: {207: {0: {185: {0: 0, 1: 8}}, 1: 3}}}}, 1: {150: {0: 9, 1: 3}}}}, 1: {67: {0: 5, 1: 6}}}}, 1: {239: {0: 8, 1: 1}}}}}}}}, 1: {564: {0: {407: {0: {511: {0: {484: {0: {290: {0: 3, 1: {209: {0: {117: {0: 9, 1: 1}}, 1: 5}}}}, 1: {122: {0: 8, 1: 2}}}}, 1: {178: {0: {321: {0: {215: {0: {209: {0: {210: {0: 4, 1: {423: {0: 9, 1: {211: {0: 4, 1: 9}}}}}}, 1: 9}}, 1: 5}}, 1: {155: {0: {343: {0: {425: {0: {182: {0: {153: {0: 9, 1: 1}}, 1: 1}}, 1: {153: {0: 8, 1: 3}}}}, 1: {210: {0: 4, 1: 9}}}}, 1: 1}}}}, 1: {201: {0: 8, 1: {150: {0: 7, 1: 3}}}}}}}}, 1: {373: {0: {288: {0: {158: {0: 7, 1: 2}}, 1: {124: {0: {144: {0: 4, 1: 1}}, 1: 8}}}}, 1: {240: {0: 4, 1: {263: {0: {209: {0: 4, 1: {181: {0: 3, 1: 7}}}}, 1: {147: {0: 9, 1: 5}}}}}}}}}}, 1: {354: {0: {208: {0: 5, 1: {178: {0: 8, 1: {147: {0: 5, 1: 3}}}}}}, 1: 2}}}}}}}}, 1: {566: {0: {210: {0: {237: {0: {154: {0: {318: {0: {181: {0: {262: {0: 4, 1: {161: {0: {554: {0: {151: {0: 9, 1: 3}}, 1: 3}}, 1: {160: {0: 4, 1: 5}}}}}}, 1: {644: {0: {341: {0: 9, 1: {399: {0: 9, 1: 4}}}}, 1: {284: {0: {267: {0: 5, 1: {178: {0: {153: {0: 8, 1: 4}}, 1: 3}}}}, 1: 9}}}}}}, 1: {399: {0: {205: {0: {313: {0: {234: {0: {157: {0: 7, 1: 1}}, 1: 3}}, 1: {155: {0: 7, 1: 4}}}}, 1: {171: {0: {533: {0: 4, 1: 7}}, 1: {176: {0: 3, 1: 7}}}}}}, 1: {264: {0: {368: {0: {124: {0: {179: {0: 9, 1: 8}}, 1: 3}}, 1: {427: {0: {456: {0: {66: {0: 4, 1: 6}}, 1: 7}}, 1: {151: {0: 4, 1: 9}}}}}}, 1: {674: {0: 9, 1: 4}}}}}}}}, 1: {508: {0: {287: {0: {505: {0: {285: {0: {261: {0: {515: {0: 3, 1: {120: {0: 8, 1: 3}}}}, 1: {400: {0: {213: {0: 5, 1: 3}}, 1: {154: {0: 4, 1: 9}}}}}}, 1: {405: {0: {426: {0: 9, 1: 3}}, 1: {152: {0: 9, 1: 5}}}}}}, 1: {130: {0: 8, 1: 2}}}}, 1: {462: {0: {376: {0: {212: {0: 9, 1: {311: {0: 8, 1: 9}}}}, 1: {182: {0: 4, 1: {266: {0: 5, 1: 9}}}}}}, 1: {152: {0: {177: {0: 6, 1: 3}}, 1: 5}}}}}}, 1: {425: {0: {100: {0: 8, 1: 6}}, 1: 6}}}}}}, 1: {231: {0: {506: {0: 9, 1: {428: {0: {157: {0: {188: {0: 9, 1: 5}}, 1: 1}}, 1: 8}}}}, 1: {485: {0: {618: {0: {228: {0: {231: {0: 7, 1: 9}}, 1: {202: {0: 7, 1: 3}}}}, 1: {207: {0: 5, 1: 3}}}}, 1: {372: {0: 7, 1: {209: {0: {183: {0: 7, 1: 4}}, 1: {127: {0: 9, 1: 8}}}}}}}}}}}}, 1: {178: {0: {644: {0: {155: {0: 9, 1: {459: {0: {429: {0: {100: {0: {152: {0: {292: {0: 5, 1: 3}}, 1: 3}}, 1: 6}}, 1: {232: {0: 8, 1: {178: {0: 3, 1: 9}}}}}}, 1: {178: {0: {421: {0: {238: {0: {535: {0: 4, 1: 9}}, 1: {402: {0: 8, 1: {232: {0: {154: {0: 8, 1: 0}}, 1: 9}}}}}}, 1: {500: {0: 4, 1: 2}}}}, 1: {671: {0: {285: {0: 8, 1: {177: {0: 9, 1: 8}}}}, 1: {286: {0: 3, 1: 9}}}}}}}}}}, 1: {507: {0: {317: {0: {342: {0: {291: {0: 3, 1: {154: {0: {154: {0: 9, 1: 3}}, 1: 5}}}}, 1: 5}}, 1: {271: {0: 5, 1: {154: {0: {154: {0: 3, 1: 9}}, 1: 8}}}}}}, 1: {407: {0: 8, 1: {157: {0: 5, 1: 3}}}}}}}}, 1: {314: {0: {340: {0: {288: {0: 3, 1: {184: {0: {430: {0: {209: {0: 9, 1: 8}}, 1: {226: {0: 3, 1: {151: {0: 9, 1: 3}}}}}}, 1: 5}}}}, 1: {174: {0: 9, 1: 5}}}}, 1: {464: {0: {397: {0: {241: {0: {151: {0: 9, 1: 3}}, 1: 8}}, 1: {322: {0: {177: {0: 9, 1: 5}}, 1: {325: {0: 9, 1: 4}}}}}}, 1: {123: {0: 5, 1: 3}}}}}}}}}}, 1: {482: {0: {485: {0: {297: {0: {347: {0: {480: {0: {479: {0: {370: {0: 3, 1: {154: {0: 5, 1: 3}}}}, 1: {128: {0: 6, 1: 2}}}}, 1: {562: {0: 8, 1: {129: {0: 6, 1: 2}}}}}}, 1: {295: {0: {298: {0: {478: {0: {186: {0: {264: {0: 5, 1: {512: {0: {290: {0: 8, 1: 5}}, 1: 3}}}}, 1: {698: {0: 5, 1: 9}}}}, 1: {154: {0: 5, 1: 8}}}}, 1: {186: {0: 8, 1: 3}}}}, 1: {216: {0: {616: {0: {210: {0: 5, 1: 3}}, 1: 3}}, 1: 5}}}}}}, 1: {323: {0: {403: {0: 5, 1: {565: {0: {510: {0: {124: {0: 3, 1: 8}}, 1: 2}}, 1: {263: {0: 3, 1: 9}}}}}}, 1: {290: {0: 3, 1: {269: {0: 5, 1: {560: {0: 9, 1: {207: {0: 0, 1: 3}}}}}}}}}}}}, 1: {563: {0: {404: {0: 5, 1: 8}}, 1: {278: {0: 6, 1: 5}}}}}}, 1: {652: {0: {298: {0: {486: {0: {216: {0: {434: {0: 6, 1: {263: {0: {101: {0: 5, 1: 3}}, 1: 6}}}}, 1: {100: {0: 8, 1: 5}}}}, 1: {406: {0: 8, 1: 2}}}}, 1: {301: {0: {346: {0: {425: {0: {123: {0: 3, 1: 2}}, 1: 2}}, 1: {453: {0: {505: {0: 2, 1: 3}}, 1: {96: {0: 8, 1: 2}}}}}}, 1: {266: {0: 6, 1: {208: {0: 5, 1: 0}}}}}}}}, 1: {403: {0: {149: {0: {128: {0: 5, 1: 6}}, 1: 3}}, 1: {426: {0: {159: {0: 3, 1: 8}}, 1: 8}}}}}}}}}}}}, 1: {297: {0: {326: {0: {295: {0: {326: {0: {296: {0: 5, 1: {479: {0: {322: {0: {269: {0: {100: {0: {153: {0: 3, 1: 9}}, 1: 2}}, 1: 5}}, 1: {558: {0: 3, 1: {129: {0: {155: {0: 0, 1: 8}}, 1: 3}}}}}}, 1: {405: {0: 8, 1: 3}}}}}}, 1: {449: {0: {478: {0: {427: {0: {186: {0: 5, 1: 9}}, 1: {181: {0: 4, 1: {126: {0: 8, 1: 3}}}}}}, 1: 8}}, 1: {290: {0: {231: {0: 2, 1: 0}}, 1: {266: {0: 8, 1: 0}}}}}}}}, 1: {244: {0: {160: {0: {344: {0: {154: {0: {130: {0: {150: {0: 5, 1: {93: {0: 2, 1: 3}}}}, 1: {157: {0: 1, 1: 8}}}}, 1: {454: {0: {265: {0: 8, 1: 3}}, 1: 1}}}}, 1: 3}}, 1: {451: {0: {238: {0: {158: {0: 1, 1: {238: {0: 5, 1: 3}}}}, 1: {177: {0: {241: {0: 5, 1: 0}}, 1: 3}}}}, 1: {216: {0: 6, 1: {126: {0: 5, 1: 8}}}}}}}}, 1: {380: {0: {204: {0: 5, 1: {180: {0: 0, 1: 3}}}}, 1: {213: {0: 8, 1: 0}}}}}}}}, 1: {481: {0: {317: {0: {423: {0: {506: {0: 3, 1: {454: {0: {158: {0: 9, 1: 3}}, 1: 8}}}}, 1: {128: {0: {477: {0: {301: {0: {210: {0: 5, 1: 3}}, 1: 9}}, 1: {268: {0: 8, 1: 2}}}}, 1: 2}}}}, 1: {299: {0: {404: {0: {297: {0: 5, 1: 3}}, 1: {489: {0: 9, 1: {175: {0: 5, 1: 8}}}}}}, 1: {543: {0: {557: {0: {213: {0: {158: {0: 4, 1: 9}}, 1: 9}}, 1: {154: {0: 8, 1: 3}}}}, 1: {128: {0: 3, 1: {176: {0: 8, 1: 3}}}}}}}}}}, 1: {351: {0: {320: {0: {653: {0: 2, 1: 8}}, 1: {298: {0: 8, 1: 0}}}}, 1: {565: {0: {405: {0: {395: {0: {177: {0: 8, 1: {210: {0: 8, 1: 2}}}}, 1: {126: {0: 5, 1: 8}}}}, 1: {374: {0: 3, 1: {531: {0: {530: {0: {245: {0: 8, 1: 3}}, 1: {148: {0: 8, 1: 3}}}}, 1: 8}}}}}}, 1: {265: {0: {323: {0: 2, 1: {181: {0: 3, 1: {126: {0: 8, 1: 2}}}}}}, 1: {368: {0: {295: {0: {528: {0: 3, 1: 8}}, 1: 2}}, 1: 6}}}}}}}}}}}}, 1: {482: {0: {247: {0: 3, 1: {267: {0: {406: {0: {184: {0: 5, 1: 8}}, 1: 3}}, 1: {328: {0: {343: {0: {209: {0: 5, 1: {184: {0: 3, 1: 5}}}}, 1: 5}}, 1: 0}}}}}}, 1: {650: {0: {154: {0: {372: {0: {563: {0: {407: {0: {456: {0: 8, 1: 6}}, 1: {126: {0: 3, 1: 0}}}}, 1: {319: {0: {96: {0: 2, 1: 6}}, 1: {298: {0: {107: {0: {127: {0: 5, 1: 3}}, 1: 6}}, 1: 0}}}}}}, 1: {164: {0: {103: {0: {104: {0: 0, 1: 6}}, 1: 6}}, 1: 5}}}}, 1: {455: {0: {92: {0: {259: {0: 3, 1: 8}}, 1: 2}}, 1: {291: {0: {297: {0: {370: {0: 2, 1: {95: {0: 3, 1: 2}}}}, 1: {127: {0: 2, 1: 8}}}}, 1: {126: {0: 6, 1: 8}}}}}}}}, 1: {455: {0: {398: {0: {155: {0: {188: {0: {125: {0: 5, 1: 8}}, 1: 3}}, 1: 3}}, 1: {370: {0: {158: {0: 8, 1: 3}}, 1: 0}}}}, 1: {266: {0: {506: {0: {288: {0: 3, 1: 8}}, 1: {482: {0: {463: {0: 8, 1: {589: {0: {402: {0: 3, 1: 8}}, 1: 3}}}}, 1: {124: {0: {150: {0: 8, 1: 3}}, 1: 2}}}}}}, 1: {371: {0: {276: {0: {395: {0: {270: {0: 3, 1: 8}}, 1: 3}}, 1: 5}}, 1: {185: {0: {181: {0: 5, 1: 8}}, 1: {130: {0: {236: {0: 9, 1: 0}}, 1: 3}}}}}}}}}}}}}}}}}}, 1: {653: {0: {269: {0: {270: {0: {293: {0: {425: {0: {426: {0: {427: {0: {394: {0: {174: {0: {539: {0: {262: {0: 5, 1: {315: {0: 5, 1: 8}}}}, 1: {202: {0: {342: {0: {131: {0: 3, 1: 5}}, 1: 5}}, 1: 3}}}}, 1: 3}}, 1: {122: {0: 0, 1: 6}}}}, 1: {535: {0: {450: {0: {402: {0: {99: {0: 2, 1: 1}}, 1: 8}}, 1: {100: {0: {124: {0: 9, 1: 5}}, 1: 6}}}}, 1: {145: {0: 6, 1: 5}}}}}}, 1: {187: {0: {270: {0: {206: {0: 6, 1: {533: {0: {343: {0: {101: {0: 2, 1: 6}}, 1: {154: {0: 3, 1: 8}}}}, 1: {647: {0: 6, 1: {285: {0: 5, 1: {126: {0: 6, 1: 8}}}}}}}}}}, 1: {121: {0: 8, 1: 5}}}}, 1: {562: {0: 8, 1: {431: {0: {533: {0: {104: {0: 8, 1: 6}}, 1: 2}}, 1: 5}}}}}}}}, 1: 6}}, 1: {158: {0: {376: {0: {294: {0: {650: {0: {314: {0: {184: {0: 2, 1: {291: {0: {211: {0: 1, 1: {101: {0: 8, 1: 6}}}}, 1: {259: {0: 2, 1: 4}}}}}}, 1: {393: {0: {98: {0: {123: {0: 2, 1: 9}}, 1: 1}}, 1: {99: {0: 0, 1: 6}}}}}}, 1: {152: {0: {155: {0: 8, 1: 7}}, 1: {126: {0: 3, 1: 2}}}}}}, 1: {567: {0: {156: {0: {198: {0: 5, 1: 2}}, 1: 8}}, 1: {239: {0: 6, 1: 8}}}}}}, 1: {425: {0: {290: {0: {450: {0: {267: {0: {185: {0: 6, 1: 3}}, 1: {180: {0: 3, 1: 8}}}}, 1: {177: {0: 8, 1: 9}}}}, 1: 3}}, 1: {566: {0: {264: {0: {150: {0: {152: {0: 4, 1: 9}}, 1: 2}}, 1: 8}}, 1: {175: {0: 6, 1: 8}}}}}}}}, 1: {616: {0: {454: {0: {236: {0: {76: {0: 3, 1: 6}}, 1: 5}}, 1: {566: {0: {486: {0: {103: {0: {128: {0: 4, 1: 8}}, 1: 1}}, 1: 6}}, 1: 6}}}}, 1: {186: {0: {99: {0: 1, 1: 2}}, 1: 8}}}}}}}}, 1: {158: {0: {183: {0: {242: {0: {568: {0: {155: {0: 5, 1: 8}}, 1: {236: {0: 6, 1: 8}}}}, 1: {377: {0: {456: {0: {106: {0: 1, 1: 8}}, 1: {132: {0: 8, 1: 2}}}}, 1: {208: {0: 4, 1: 9}}}}}}, 1: {477: {0: {314: {0: {566: {0: {398: {0: {202: {0: {179: {0: 7, 1: 8}}, 1: 2}}, 1: 8}}, 1: {120: {0: 2, 1: 3}}}}, 1: 8}}, 1: {208: {0: 2, 1: {184: {0: 6, 1: 3}}}}}}}}, 1: {435: {0: {458: {0: {345: {0: {290: {0: 2, 1: 8}}, 1: {99: {0: 8, 1: 2}}}}, 1: 8}}, 1: {349: {0: {130: {0: 0, 1: 2}}, 1: {288: {0: {125: {0: 3, 1: 8}}, 1: {426: {0: {124: {0: 0, 1: 3}}, 1: 8}}}}}}}}}}}}, 1: {569: {0: {624: {0: {407: {0: {512: {0: {182: {0: {451: {0: {349: {0: {160: {0: 5, 1: 8}}, 1: {598: {0: 1, 1: 2}}}}, 1: {129: {0: {133: {0: 9, 1: 6}}, 1: 2}}}}, 1: {452: {0: 8, 1: {154: {0: {154: {0: 9, 1: 3}}, 1: 2}}}}}}, 1: {271: {0: {132: {0: 2, 1: 1}}, 1: {233: {0: 5, 1: 3}}}}}}, 1: {512: {0: {236: {0: {398: {0: {369: {0: 8, 1: {158: {0: 9, 1: 4}}}}, 1: 4}}, 1: {289: {0: 8, 1: 9}}}}, 1: {153: {0: 5, 1: 4}}}}}}, 1: {347: {0: {406: {0: {459: {0: {590: {0: {149: {0: {212: {0: 0, 1: 8}}, 1: 2}}, 1: 2}}, 1: {324: {0: {92: {0: 6, 1: 2}}, 1: 8}}}}, 1: {120: {0: 8, 1: 3}}}}, 1: {429: {0: {562: {0: {267: {0: 8, 1: {122: {0: {124: {0: 9, 1: 8}}, 1: 3}}}}, 1: 3}}, 1: {352: {0: 8, 1: {151: {0: 4, 1: 0}}}}}}}}}}, 1: {457: {0: {154: {0: {383: {0: {246: {0: {404: {0: {456: {0: {371: {0: 2, 1: {40: {0: {102: {0: 5, 1: 4}}, 1: 6}}}}, 1: 5}}, 1: {452: {0: {105: {0: 3, 1: 5}}, 1: {101: {0: 2, 1: 5}}}}}}, 1: 5}}, 1: {238: {0: 6, 1: 0}}}}, 1: {320: {0: {266: {0: 2, 1: {64: {0: 9, 1: 2}}}}, 1: {425: {0: {287: {0: 3, 1: {152: {0: 8, 1: 9}}}}, 1: {621: {0: 2, 1: {315: {0: 3, 1: {150: {0: 0, 1: 8}}}}}}}}}}}}, 1: {345: {0: {320: {0: {343: {0: 2, 1: {203: {0: 6, 1: 8}}}}, 1: {571: {0: {244: {0: {154: {0: {236: {0: {398: {0: 1, 1: 6}}, 1: 8}}, 1: {265: {0: 8, 1: 2}}}}, 1: {428: {0: {186: {0: 5, 1: 0}}, 1: 8}}}}, 1: {463: {0: 2, 1: {154: {0: 6, 1: 8}}}}}}}}, 1: {353: {0: {205: {0: {424: {0: {589: {0: {123: {0: 6, 1: 4}}, 1: 8}}, 1: {215: {0: 6, 1: {135: {0: 0, 1: 5}}}}}}, 1: {509: {0: 8, 1: {92: {0: 5, 1: 2}}}}}}, 1: {271: {0: {157: {0: 6, 1: 3}}, 1: {177: {0: 0, 1: 3}}}}}}}}}}}}}}, 1: {459: {0: {457: {0: {297: {0: {295: {0: {597: {0: {156: {0: 8, 1: {174: {0: 5, 1: 3}}}}, 1: {327: {0: 5, 1: 3}}}}, 1: {162: {0: {266: {0: 5, 1: 3}}, 1: 5}}}}, 1: {456: {0: {425: {0: {315: {0: {482: {0: {628: {0: 3, 1: 2}}, 1: 8}}, 1: {122: {0: {150: {0: 9, 1: 3}}, 1: 8}}}}, 1: {127: {0: {128: {0: 0, 1: 5}}, 1: 8}}}}, 1: {177: {0: 8, 1: 3}}}}}}, 1: {383: {0: {399: {0: {537: {0: {534: {0: {157: {0: 8, 1: {325: {0: {179: {0: 6, 1: 5}}, 1: 8}}}}, 1: 8}}, 1: {131: {0: 3, 1: 6}}}}, 1: {260: {0: {562: {0: 5, 1: {180: {0: 6, 1: {181: {0: 0, 1: 8}}}}}}, 1: {265: {0: 8, 1: {149: {0: 8, 1: 3}}}}}}}}, 1: {380: {0: {597: {0: 6, 1: 0}}, 1: {566: {0: {185: {0: {121: {0: {124: {0: 8, 1: 5}}, 1: 2}}, 1: 8}}, 1: {130: {0: 0, 1: 3}}}}}}}}}}, 1: 8}}}}}}, 1: {318: {0: {547: {0: {235: {0: {318: {0: {179: {0: 1, 1: {537: {0: {291: {0: {339: {0: {509: {0: {504: {0: 3, 1: {256: {0: 2, 1: 3}}}}, 1: {641: {0: {672: {0: {154: {0: {238: {0: {671: {0: 2, 1: {150: {0: 7, 1: 3}}}}, 1: 7}}, 1: {290: {0: {179: {0: 8, 1: 2}}, 1: {670: {0: 1, 1: 7}}}}}}, 1: {179: {0: 1, 1: 7}}}}, 1: {122: {0: 3, 1: 2}}}}}}, 1: {68: {0: 8, 1: 6}}}}, 1: {149: {0: 1, 1: 7}}}}, 1: {341: {0: {312: {0: {152: {0: {203: {0: {207: {0: 8, 1: {480: {0: 7, 1: {213: {0: 2, 1: 7}}}}}}, 1: {430: {0: 2, 1: {145: {0: {174: {0: 2, 1: 3}}, 1: 7}}}}}}, 1: 2}}, 1: {155: {0: 6, 1: 9}}}}, 1: {180: {0: {69: {0: 4, 1: 6}}, 1: 8}}}}}}}}, 1: {350: {0: {181: {0: {514: {0: {369: {0: {242: {0: {317: {0: {699: {0: {398: {0: {183: {0: 1, 1: {101: {0: 8, 1: 5}}}}, 1: {367: {0: 8, 1: {158: {0: 4, 1: 8}}}}}}, 1: {183: {0: 7, 1: 9}}}}, 1: {185: {0: {476: {0: {290: {0: 4, 1: 1}}, 1: {125: {0: {154: {0: {208: {0: 5, 1: 9}}, 1: 4}}, 1: {121: {0: 1, 1: 2}}}}}}, 1: {345: {0: {158: {0: 8, 1: {315: {0: {212: {0: 8, 1: 5}}, 1: {101: {0: 1, 1: 6}}}}}}, 1: 1}}}}}}, 1: {158: {0: {534: {0: {134: {0: 8, 1: 4}}, 1: {506: {0: {185: {0: 8, 1: 5}}, 1: 5}}}}, 1: 8}}}}, 1: {530: {0: {426: {0: {155: {0: 5, 1: 1}}, 1: {208: {0: {132: {0: {672: {0: 4, 1: 1}}, 1: 6}}, 1: {156: {0: 9, 1: {154: {0: 8, 1: 4}}}}}}}}, 1: {127: {0: 5, 1: 4}}}}}}, 1: {426: {0: {320: {0: 5, 1: {646: {0: {127: {0: 2, 1: 4}}, 1: 8}}}}, 1: {316: {0: {256: {0: 6, 1: 2}}, 1: {448: {0: 8, 1: {106: {0: 0, 1: 6}}}}}}}}}}, 1: {539: {0: {126: {0: {161: {0: 8, 1: 5}}, 1: {345: {0: 6, 1: {99: {0: {124: {0: 4, 1: 1}}, 1: 2}}}}}}, 1: {535: {0: 1, 1: {348: {0: {559: {0: {73: {0: 2, 1: 6}}, 1: 8}}, 1: 1}}}}}}}}, 1: {370: {0: {294: {0: {453: {0: {213: {0: {368: {0: {181: {0: 8, 1: {152: {0: 4, 1: 8}}}}, 1: {126: {0: 4, 1: 3}}}}, 1: {157: {0: {398: {0: 8, 1: {155: {0: 9, 1: 8}}}}, 1: 8}}}}, 1: {458: {0: 8, 1: {153: {0: 6, 1: 8}}}}}}, 1: {156: {0: {479: {0: {212: {0: {186: {0: 7, 1: 4}}, 1: {260: {0: {188: {0: 9, 1: 5}}, 1: 8}}}}, 1: {458: {0: {291: {0: 1, 1: {612: {0: 1, 1: 8}}}}, 1: {103: {0: {182: {0: 7, 1: 2}}, 1: 6}}}}}}, 1: {270: {0: {293: {0: {127: {0: {128: {0: 1, 1: 6}}, 1: 3}}, 1: {264: {0: 8, 1: 1}}}}, 1: 8}}}}}}, 1: {513: {0: {558: {0: {369: {0: {212: {0: {265: {0: {99: {0: 4, 1: 6}}, 1: {210: {0: 9, 1: 4}}}}, 1: {182: {0: 9, 1: 8}}}}, 1: {700: {0: {301: {0: {581: {0: 4, 1: 1}}, 1: {214: {0: 7, 1: 9}}}}, 1: 9}}}}, 1: {265: {0: {186: {0: 5, 1: {105: {0: 2, 1: 1}}}}, 1: {263: {0: {103: {0: 0, 1: 6}}, 1: 8}}}}}}, 1: {295: {0: {188: {0: 6, 1: 2}}, 1: {243: {0: {209: {0: {106: {0: 9, 1: 6}}, 1: 4}}, 1: {263: {0: 3, 1: 0}}}}}}}}}}}}}}, 1: {318: {0: {341: {0: {509: {0: {268: {0: {454: {0: {592: {0: {211: {0: {182: {0: {181: {0: 1, 1: 2}}, 1: 8}}, 1: 7}}, 1: {673: {0: 1, 1: {154: {0: {154: {0: 7, 1: 1}}, 1: 3}}}}}}, 1: {214: {0: {429: {0: {233: {0: {150: {0: 8, 1: 3}}, 1: 2}}, 1: {345: {0: {149: {0: 3, 1: 2}}, 1: 7}}}}, 1: {593: {0: 8, 1: 3}}}}}}, 1: {537: {0: {266: {0: {475: {0: 3, 1: 2}}, 1: {480: {0: {203: {0: 8, 1: 3}}, 1: 7}}}}, 1: {623: {0: {267: {0: {511: {0: {341: {0: 7, 1: {181: {0: 4, 1: 9}}}}, 1: 3}}, 1: {540: {0: 7, 1: 2}}}}, 1: {374: {0: 8, 1: {176: {0: 2, 1: 3}}}}}}}}}}, 1: {155: {0: {238: {0: {322: {0: {125: {0: {372: {0: 2, 1: {258: {0: 2, 1: 7}}}}, 1: 1}}, 1: {348: {0: 8, 1: {98: {0: 2, 1: 6}}}}}}, 1: {624: {0: {531: {0: {428: {0: {232: {0: 7, 1: 2}}, 1: {311: {0: {315: {0: {367: {0: 7, 1: {258: {0: 7, 1: 2}}}}, 1: {178: {0: {155: {0: 8, 1: 1}}, 1: 7}}}}, 1: {177: {0: 2, 1: 9}}}}}}, 1: {459: {0: {156: {0: {175: {0: 7, 1: 2}}, 1: 1}}, 1: 2}}}}, 1: {397: {0: 2, 1: 3}}}}}}, 1: {598: {0: {646: {0: {316: {0: {316: {0: 2, 1: 7}}, 1: 8}}, 1: {232: {0: {233: {0: 2, 1: 8}}, 1: {294: {0: 3, 1: {208: {0: 2, 1: 8}}}}}}}}, 1: 2}}}}}}, 1: {652: {0: {211: {0: {367: {0: {230: {0: 2, 1: 8}}, 1: {99: {0: {209: {0: 4, 1: 9}}, 1: 6}}}}, 1: {189: {0: {560: {0: {406: {0: {702: {0: 9, 1: 7}}, 1: {177: {0: 3, 1: 7}}}}, 1: {182: {0: 9, 1: 8}}}}, 1: 8}}}}, 1: {708: {0: {146: {0: {162: {0: 8, 1: {134: {0: 4, 1: 8}}}}, 1: 5}}, 1: {204: {0: {212: {0: 9, 1: 7}}, 1: {179: {0: 4, 1: 8}}}}}}}}}}, 1: {649: {0: {293: {0: {461: {0: {680: {0: {123: {0: 8, 1: {122: {0: 1, 1: 8}}}}, 1: {149: {0: 1, 1: 4}}}}, 1: {236: {0: {237: {0: 2, 1: 8}}, 1: {97: {0: 3, 1: 6}}}}}}, 1: {233: {0: {480: {0: {235: {0: 8, 1: {213: {0: 1, 1: 8}}}}, 1: {180: {0: 9, 1: {121: {0: {123: {0: 8, 1: 4}}, 1: 2}}}}}}, 1: {593: {0: {205: {0: 9, 1: 2}}, 1: {151: {0: {157: {0: 7, 1: 8}}, 1: {458: {0: 8, 1: 1}}}}}}}}}}, 1: 8}}}}}}, 1: {654: {0: {342: {0: {319: {0: {342: {0: {510: {0: {507: {0: {539: {0: {509: {0: 3, 1: 2}}, 1: {241: {0: 1, 1: {184: {0: {200: {0: 2, 1: 7}}, 1: {123: {0: 3, 1: 6}}}}}}}}, 1: {454: {0: 3, 1: {707: {0: 2, 1: 3}}}}}}, 1: 2}}, 1: {184: {0: {568: {0: {367: {0: {179: {0: {13: {0: 7, 1: 6}}, 1: 8}}, 1: {152: {0: 9, 1: 4}}}}, 1: 6}}, 1: {544: {0: 8, 1: {231: {0: 2, 1: 8}}}}}}}}, 1: {399: {0: {513: {0: {263: {0: {101: {0: 2, 1: 6}}, 1: 8}}, 1: {482: {0: {185: {0: {65: {0: 1, 1: 2}}, 1: 5}}, 1: {378: {0: {72: {0: 2, 1: 6}}, 1: {324: {0: 5, 1: {67: {0: {122: {0: 3, 1: 8}}, 1: 6}}}}}}}}}}, 1: {520: {0: {297: {0: {177: {0: {475: {0: {646: {0: 6, 1: 1}}, 1: {72: {0: {123: {0: 5, 1: 4}}, 1: 6}}}}, 1: 2}}, 1: {508: {0: {122: {0: 8, 1: 3}}, 1: {591: {0: {102: {0: 2, 1: 3}}, 1: {96: {0: 6, 1: 2}}}}}}}}, 1: {203: {0: {283: {0: 2, 1: 8}}, 1: 3}}}}}}}}, 1: {542: {0: {207: {0: {404: {0: 6, 1: 4}}, 1: {405: {0: {235: {0: 8, 1: {100: {0: {150: {0: 0, 1: 3}}, 1: 6}}}}, 1: {155: {0: 9, 1: 8}}}}}}, 1: {238: {0: {186: {0: 6, 1: {124: {0: 9, 1: 2}}}}, 1: {396: {0: {155: {0: 9, 1: 2}}, 1: {90: {0: 8, 1: 6}}}}}}}}}}, 1: {513: {0: {541: {0: {512: {0: {483: {0: 3, 1: {508: {0: {288: {0: 3, 1: 8}}, 1: 8}}}}, 1: {178: {0: 8, 1: {175: {0: 3, 1: 2}}}}}}, 1: {456: {0: {125: {0: {173: {0: 8, 1: 7}}, 1: 1}}, 1: {150: {0: {125: {0: {153: {0: 4, 1: 0}}, 1: 6}}, 1: 2}}}}}}, 1: {490: {0: {343: {0: {595: {0: {153: {0: 3, 1: 8}}, 1: {592: {0: {126: {0: {151: {0: 7, 1: 4}}, 1: {122: {0: 1, 1: 2}}}}, 1: {290: {0: 2, 1: 3}}}}}}, 1: {382: {0: 8, 1: {122: {0: {126: {0: 6, 1: 5}}, 1: 0}}}}}}, 1: {542: {0: {405: {0: {569: {0: 8, 1: 3}}, 1: 8}}, 1: {267: {0: {400: {0: 8, 1: {124: {0: 0, 1: 3}}}}, 1: {205: {0: 1, 1: {123: {0: 3, 1: 2}}}}}}}}}}}}}}}}, 1: {655: {0: {572: {0: {211: {0: {266: {0: {597: {0: {397: {0: {349: {0: {565: {0: {282: {0: 2, 1: 7}}, 1: {318: {0: {123: {0: 4, 1: 8}}, 1: 7}}}}, 1: {402: {0: {396: {0: {185: {0: 7, 1: 8}}, 1: {242: {0: {98: {0: 4, 1: 6}}, 1: {190: {0: 9, 1: 5}}}}}}, 1: {268: {0: {233: {0: {98: {0: 4, 1: 6}}, 1: {184: {0: 2, 1: 9}}}}, 1: 4}}}}}}, 1: {507: {0: 4, 1: {269: {0: {538: {0: {104: {0: 9, 1: 4}}, 1: 6}}, 1: {261: {0: 5, 1: 4}}}}}}}}, 1: {567: {0: {155: {0: 8, 1: 3}}, 1: {184: {0: 6, 1: {98: {0: 9, 1: 8}}}}}}}}, 1: {378: {0: {246: {0: {620: {0: {262: {0: {180: {0: 4, 1: 8}}, 1: 2}}, 1: {453: {0: {340: {0: 1, 1: 7}}, 1: {157: {0: 7, 1: 4}}}}}}, 1: {187: {0: 5, 1: 8}}}}, 1: {505: {0: {264: {0: 4, 1: {263: {0: {376: {0: 9, 1: 4}}, 1: {187: {0: 9, 1: {234: {0: 9, 1: 7}}}}}}}}, 1: {214: {0: {257: {0: 8, 1: 2}}, 1: {210: {0: 0, 1: 5}}}}}}}}}}, 1: {536: {0: {378: {0: {652: {0: {456: {0: {161: {0: 9, 1: 5}}, 1: {454: {0: {212: {0: 8, 1: {182: {0: 8, 1: 9}}}}, 1: {155: {0: 2, 1: 4}}}}}}, 1: {430: {0: 3, 1: 8}}}}, 1: {212: {0: {321: {0: {293: {0: 4, 1: {124: {0: 7, 1: 8}}}}, 1: {234: {0: 8, 1: {671: {0: 9, 1: {183: {0: 9, 1: 4}}}}}}}}, 1: {483: {0: 9, 1: {490: {0: {702: {0: {216: {0: {256: {0: {234: {0: {456: {0: 4, 1: 9}}, 1: 9}}, 1: {184: {0: 9, 1: 7}}}}, 1: {270: {0: 8, 1: 9}}}}, 1: {209: {0: 7, 1: 8}}}}, 1: {234: {0: 4, 1: {213: {0: 9, 1: 2}}}}}}}}}}}}, 1: {489: {0: {532: {0: {370: {0: 8, 1: {185: {0: 4, 1: 7}}}}, 1: {183: {0: 5, 1: 2}}}}, 1: {410: {0: {209: {0: {74: {0: {96: {0: 2, 1: 3}}, 1: 6}}, 1: {652: {0: 2, 1: 9}}}}, 1: {184: {0: 0, 1: 6}}}}}}}}}}, 1: {651: {0: {654: {0: {269: {0: {540: {0: {461: {0: {518: {0: {489: {0: 8, 1: {181: {0: 5, 1: 6}}}}, 1: {615: {0: 6, 1: {101: {0: {101: {0: 8, 1: 1}}, 1: 6}}}}}}, 1: {464: {0: {261: {0: {99: {0: 1, 1: 6}}, 1: 8}}, 1: {258: {0: 4, 1: 2}}}}}}, 1: 6}}, 1: {382: {0: {208: {0: {184: {0: {620: {0: 8, 1: {232: {0: 5, 1: 8}}}}, 1: {156: {0: {236: {0: 9, 1: 4}}, 1: {96: {0: {97: {0: 6, 1: 3}}, 1: 2}}}}}}, 1: {234: {0: 6, 1: 2}}}}, 1: {421: {0: 6, 1: {243: {0: {103: {0: 4, 1: 6}}, 1: 0}}}}}}}}, 1: {542: {0: {321: {0: {210: {0: 4, 1: {300: {0: 9, 1: 4}}}}, 1: {150: {0: {314: {0: {705: {0: 4, 1: 9}}, 1: {201: {0: 7, 1: 4}}}}, 1: {122: {0: 8, 1: 1}}}}}}, 1: {629: {0: {213: {0: {127: {0: 5, 1: 6}}, 1: 4}}, 1: {349: {0: 6, 1: {495: {0: 8, 1: 2}}}}}}}}}}, 1: {372: {0: {704: {0: {522: {0: 8, 1: 2}}, 1: {182: {0: 7, 1: 9}}}}, 1: {591: {0: {185: {0: {406: {0: {234: {0: {163: {0: 8, 1: 4}}, 1: {126: {0: 9, 1: 6}}}}, 1: 4}}, 1: {510: {0: 9, 1: {242: {0: 8, 1: 9}}}}}}, 1: {409: {0: {272: {0: 2, 1: {221: {0: 8, 1: 5}}}}, 1: 0}}}}}}}}}}, 1: {540: {0: {399: {0: {294: {0: {182: {0: {209: {0: {154: {0: {429: {0: {286: {0: 4, 1: 8}}, 1: 4}}, 1: 8}}, 1: {427: {0: {188: {0: 9, 1: 8}}, 1: 8}}}}, 1: 8}}, 1: {374: {0: {486: {0: {565: {0: {429: {0: {183: {0: 5, 1: 8}}, 1: {186: {0: 9, 1: {160: {0: 3, 1: 2}}}}}}, 1: {183: {0: {212: {0: 7, 1: 9}}, 1: 1}}}}, 1: {156: {0: 7, 1: {155: {0: 1, 1: 7}}}}}}, 1: {705: {0: {213: {0: {260: {0: {234: {0: {147: {0: 7, 1: 8}}, 1: 1}}, 1: {228: {0: 8, 1: 7}}}}, 1: 8}}, 1: {182: {0: 9, 1: {180: {0: 3, 1: 8}}}}}}}}}}, 1: {620: {0: {238: {0: {182: {0: {200: {0: {429: {0: 8, 1: 4}}, 1: 7}}, 1: {153: {0: {182: {0: 9, 1: 3}}, 1: {126: {0: 5, 1: 8}}}}}}, 1: {541: {0: {177: {0: 8, 1: 3}}, 1: {465: {0: {405: {0: {426: {0: {153: {0: 1, 1: 4}}, 1: {294: {0: 8, 1: {152: {0: 9, 1: 8}}}}}}, 1: {160: {0: 9, 1: 8}}}}, 1: {202: {0: 4, 1: 3}}}}}}}}, 1: {378: {0: {431: {0: {129: {0: 8, 1: 0}}, 1: 5}}, 1: {538: {0: 8, 1: 3}}}}}}}}, 1: 8}}}}}}}}}}\n" + ] + } + ], + "source": [ + "tree = createTree((trainDataArr, trainLabelArr))\n", + "print('tree is:', tree)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(testDataList, tree):\n", + " '''\n", + " 预测标签\n", + " :param testDataList:样本\n", + " :param tree: 决策树\n", + " :return: 预测结果\n", + " ''' \n", + " while True: #死循环,直到找到一个有效地分类\n", + " (key, value), = tree.items() #例如{73: {0: {74:6}}}看起来节点很多,但是对于字典的最顶层来说,只有73一个key,其余都是value\n", + " \n", + " if type(tree[key]).__name__ == 'dict': #如果当前的value是字典,说明还需要遍历下去\n", + " \n", + " dataVal = testDataList[key] # 0,1\n", + " del testDataList[key]\n", + " #获取目前所在节点的feature值,需要在样本中删除该feature\n", + " #因为在创建树的过程中,feature的索引值永远是对于当时剩余的feature来设置的\n", + " #所以需要不断地删除已经用掉的特征,保证索引相对位置的一致性\n", + " \n", + " tree = value[dataVal] #将tree更新为其子节点的字典\n", + " \n", + " if type(tree).__name__ == 'int': #如果当前节点的子节点的值是int,就直接返回该int值\n", + " return tree #返回该节点值,也就是分类值\n", + " #例如{403: {0: 7, 1: {297:7}},dataVal=0\n", + " #此时上一行tree = value[dataVal],将tree定位到了7,而7不再是一个字典了,这里就可以直接返回7了,\n", + " #如果tree = value[1],那就是一个新的子节点,需要继续遍历下去\n", + "\n", + " else: #如果当前value不是字典,那就返回分类值\n", + " return value " + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.8549\n" + ] + } + ], + "source": [ + "errorCnt = 0\n", + "for i in range(len(testDataArr)):\n", + " if testLabelArr[i] != predict(testDataArr[i], tree):\n", + " errorCnt += 1\n", + "accuracy = 1 - errorCnt / len(testDataArr)\n", + "print(accuracy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "oldHeight": 238, + "position": { + "height": "40px", + "left": "767px", + "right": "20px", + "top": "-3px", + "width": "458px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "varInspector_section_display": "none", + "window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/.ipynb_checkpoints/04-logistic-checkpoint.ipynb b/.ipynb_checkpoints/04-logistic-checkpoint.ipynb new file mode 100644 index 0000000..db5c06c --- /dev/null +++ b/.ipynb_checkpoints/04-logistic-checkpoint.ipynb @@ -0,0 +1,177 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n", + "start read file\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from minst import loadData\n", + "\n", + "trainData, trainLabel = loadData(fileName='D:/Jupyter/mnist_train.csv',label_bin=1)\n", + "testData, testLabel = loadData(fileName='D:/Jupyter/mnist_test.csv',label_bin=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def logisticRegression(trainData, trainLabel, iter = 200,h=0.001):\n", + " '''\n", + " 逻辑斯蒂回归训练过程\n", + " :param trainDataList:训练集\n", + " :param trainLabelList: 标签集\n", + " :param iter: 迭代次数\n", + " :param h: 学习率\n", + " :return: 学习得的w\n", + " '''\n", + " for i in range(len(trainData)):\n", + " trainData[i].append(1) #在每一行最后添加一个1 (作为b)\n", + " trainData = np.array(trainData)\n", + " \n", + " w = np.zeros(trainData.shape[1]) #初始化w ((784+1),1)\n", + " \n", + " for i in range(iter): #迭代iter次进行随机梯度下降\n", + " for j in range(trainData.shape[0]): # 6000 随机梯度下降 \n", + " wx = np.dot(w,trainData[j])\n", + " xi = trainData[j]\n", + " yi = trainLabel[j]\n", + " w += h * (xi * yi - (np.exp(wx) * xi) / ( 1 + np.exp(wx)))\n", + " return w\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:22: RuntimeWarning: invalid value encountered in multiply\n", + "C:\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:22: RuntimeWarning: invalid value encountered in true_divide\n" + ] + } + ], + "source": [ + "w = logisticRegression(trainData, trainLabel)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(w, x):\n", + " '''\n", + " 预测标签\n", + " :param w:训练过程中学到的w\n", + " :param x: 要预测的样本\n", + " :return: 预测结果\n", + " '''\n", + " wx = np.dot(w, x)\n", + " P1 = np.exp(wx) / (1 + np.exp(wx))\n", + " if P1 >= 0.5:\n", + " return 1\n", + " return 0" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.902\n" + ] + } + ], + "source": [ + "for i in range(len(testData)):\n", + " testData[i].append(1)\n", + " \n", + "errorCnt = 0\n", + "for i in range(len(testData)):\n", + " if testLabel[i] != predict(w,testData[i]):\n", + " errorCnt += 1\n", + "accuracy = 1 - errorCnt / len(testData)\n", + "print(accuracy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "position": { + "height": "350px", + "left": "1368px", + "right": "20px", + "top": "54px", + "width": "446px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/.ipynb_checkpoints/05-MaxEntropy-checkpoint.ipynb b/.ipynb_checkpoints/05-MaxEntropy-checkpoint.ipynb new file mode 100644 index 0000000..d2a36af --- /dev/null +++ b/.ipynb_checkpoints/05-MaxEntropy-checkpoint.ipynb @@ -0,0 +1,378 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from minst import loadData\n", + "from collections import defaultdict\n", + "\n", + "trainData, trainLabel = loadData(fileName='D:/Jupyter/mnist_train.csv',label_bin=1)\n", + "testData, testLabel = loadData(fileName='D:/Jupyter/mnist_test.csv',label_bin=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " '''\n", + " 最大熵类\n", + " '''\n", + " def __init__(self, trainDataList, trainLabelList, testDataList, testLabelList):\n", + " '''\n", + " 各参数初始化\n", + " '''\n", + " self.trainDataList = trainDataList #训练数据集\n", + " self.trainLabelList = trainLabelList #训练标签集\n", + " self.testDataList = testDataList #测试数据集\n", + " self.testLabelList = testLabelList #测试标签集\n", + " self.featureNum = len(trainDataList[0]) #特征数量\n", + " self.N = len(trainDataList) #总训练集长度\n", + " self.n = 0 #训练集中(xi,y)对数量\n", + " self.M = 10000 #测试集长度\n", + " self.fixy = self.calc_fixy() #所有(x, y)对出现的次数\n", + " self.w = [0] * self.n #Pw(y|x)中的w\n", + " self.xy2idDict, self.id2xyDict = self.createSearchDict() #(x, y)->id和id->(x, y)的搜索字典\n", + " self.Ep_xy = self.calcEp_xy() #Ep_xy期望值\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " 计算特征函数$f(x, y)$关于模型$P(Y|X)$与经验分布$\\tilde{P}(X, Y)$的期望值,即“6.2.2 最大熵模型的定义”中第二个期望(83页最上方的期望):\n", + " $$E_{P}(f)=\\sum_{x, y} \\tilde{P}(x) P(y | x) f(x, y)$$" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def calcEpxy(self): \n", + " Epxy = [0] * self.n #初始化期望存放列表,对于每一个xy对都有一个期望 \n", + "\n", + " for i in range(self.N): #对于每一个样本进行遍历 60000 \n", + " Pwxy = [0] * 2 #初始化公式中的P(y|x)列表 X表示是一个样本的全部特征,x表示单个特征,这里是全部特征的一个样本\n", + " \n", + " Pwxy[0] = self.calcPwy_x(self.trainDataList[i], 0) #计算P(y = 0 } X) \n", + " Pwxy[1] = self.calcPwy_x(self.trainDataList[i], 1) #计算P(y = 1 } X)\n", + " \n", + " for feature in range(self.featureNum): #784\n", + " for y in range(2): \n", + " if (self.trainDataList[i][feature], y) in self.fixy[feature]:\n", + " id = self.xy2idDict[feature][(self.trainDataList[i][feature], y)]\n", + " Epxy[id] += (1 / self.N) * Pwxy[y]\n", + " return Epxy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "计算特征函数$f(x, y)$关于经验分布$\\tilde{P}(X, Y)$的期望值。即“6.2.2 最大熵的定义”中第一个期望(82页最下方那个式子):\n", + "$$\n", + "E_{\\tilde{P}}(f)=\\sum_{x, y} \\tilde{P}(x, y) f(x, y)\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def calcEp_xy(self):\n", + " Ep_xy = [0] * self.n #初始化Ep_xy列表,长度为n\n", + "\n", + " for feature in range(self.featureNum):\n", + " for (x, y) in self.fixy[feature]: #遍历每个特征中的(x, y)\n", + " id = self.xy2idDict[feature][(x, y)] #获得其id\n", + " Ep_xy[id] = self.fixy[feature][(x, y)] / self.N #将计算得到的Ep_xy写入对应的位置中fixy中存放所有对在训练集中出现过的次数,处于训练集总长度N就是概率了\n", + "\n", + " return Ep_xy #返回期望" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " 设置xy搜多id字典。这里的x指的是单个的特征,而不是某个样本,因此将特征存入字典时也需要存入这是第几个特征这一信息,这是为了后续的方便,否则会乱套。比如说一个样本X = (0, 1, 1) label =(1)。\n", + "生成的标签对有(0, 1), (1, 1), (1, 1),三个(x,y)对并不能判断属于哪个特征的,后续就没法往下写。\n", + "不可能通过(1, 1)就能找到对应的id,因为对于(1, 1),字典中有多重映射。\n", + "所以在生成字典的时总共生成了特征数个字典,例如在mnist中样本有784维特征,所以生成784个字典,属于不同特征的xy存入不同特征内的字典中,使其不会混淆。" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def createSearchDict(self):\n", + " '''\n", + " 创建查询字典\n", + " xy2idDict:通过(x,y)对找到其id,所有出现过的xy对都有一个id\n", + " id2xyDict:通过id找到对应的(x,y)对\n", + " '''\n", + "\n", + " xy2idDict = [{} for i in range(self.featureNum)] #初始化id到xy对的字典。[{}, {}, {}, {},……, {}, {}, {}]\n", + " id2xyDict = {} #设置索引,其实就是最后的id\n", + " index = 0\n", + "\n", + " for feature in range(self.featureNum):\n", + " #对出现过的每一个(x, y)对进行遍历 \n", + " for (x, y) in self.fixy[feature]: #fixy:内部存放特征数目个字典,对于遍历的每一个特征,单独读取对应字典内的(x, y)对\n", + " xy2idDict[feature][(x, y)] = index #将该(x, y)对存入字典中,要注意存入时通过[feature]指定了存入哪个特征内部的字典 \n", + " id2xyDict[index] = (x, y) #同时在id->xy字典中写入id号,val为(x, y)对\n", + " index += 1\n", + "\n", + " return xy2idDict, id2xyDict" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{}, {(3, 1): 2}, {}, {}, {}, {}, {}, {}, {}, {}]\n" + ] + } + ], + "source": [ + "xy2idDict = [{} for i in range(10)]\n", + "xy2idDict[1][(3,1)]=2\n", + "print(xy2idDict)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{2: (3, 1), 3: (4, 0)}\n" + ] + } + ], + "source": [ + "id2xyDict = {}\n", + "id2xyDict[2] = (3, 1)\n", + "id2xyDict[3] = (4, 0)\n", + "print(id2xyDict)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "计算(x, y)在训练集中出现过的次数" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def calc_fixy(self):\n", + " fixyDict = [defaultdict(int) for i in range(self.featureNum)]#建立特征数目个字典,属于不同特征的(x, y)对存入不同的字典中\n", + " #defaultdict(int)---字典里key不存在时返回0\n", + " \n", + " for i in range(len(self.trainDataList)): \n", + " for j in range(self.featureNum): #遍历样本中所有特征 \n", + " fixyDict[j][(self.trainDataList[i][j], self.trainLabelList[i])] += 1 #将出现过的(x, y)对放入字典中并计数值加1 \n", + " for i in fixyDict: \n", + " self.n += len(i) #对整个大字典进行计数,判断去重后还有多少(x, y)对,写入n\n", + " \n", + " return fixyDict #返回大字典" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[defaultdict(int, {}),\n", + " defaultdict(int, {(3, 1): 5}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {})]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from collections import defaultdict\n", + "fixyDict = [defaultdict(int) for i in range(10)]\n", + "fixyDict[1][(3,1)]=5\n", + "fixyDict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "计算“6.23 最大熵模型的学习” 式6.22\n", + "$$\n", + "P_{w}(y | x)=\\frac{1}{Z_{w}(x)} \\exp \\left(\\sum_{i=1}^{n} w_{i} f_{i}(x, y)\\right)\n", + "$$\n", + "$$\n", + "Z_{w}(x)=\\sum_{y} \\exp \\left(\\sum_{i=1}^{n} w_{i} f_{i}(x, y)\\right)\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt: \n", + " def calcPwy_x(self, X, y):\n", + " '''\n", + " :param X: 要计算的样本X(一个包含全部特征的样本)\n", + " :param y: 该样本的标签\n", + " :return: 计算得到的Pw(Y|X)\n", + " '''\n", + " numerator = 0 #分子\n", + " Z = 0 #分母\n", + "\n", + " for i in range(self.featureNum): #对每个特征进行遍历\n", + " if (X[i], y) in self.xy2idDict[i]: #如果该(xi,y)对在训练集中出现过 \n", + " index = self.xy2idDict[i][(X[i], y)] #在xy->id字典中指定当前特征i,以及(x, y)对:(X[i], y),读取其id\n", + " #分子是wi和fi(x,y)的连乘再求和,最后指数,由于当(x, y)存在时fi(x,y)为1,因为xy对肯定存在,所以直接就是1\n", + " #对于分子来说,就是n个wi累加,最后再指数就可以了.因为有n个w,所以通过id将w与xy绑定,前文的两个搜索字典中的id就是用在这里\n", + " numerator += self.w[index] #同时计算其他一种标签y时候的分子,下面的z并不是全部的分母,再加上上式的分子以后才是完整的分母,即z = z + numerator\n", + "\n", + " if (X[i], 1-y) in self.xy2idDict[i]: \n", + " index = self.xy2idDict[i][(X[i], 1-y)] \n", + " Z += self.w[index]\n", + "\n", + " numerator = np.exp(numerator) #计算分子的指数\n", + " Z = np.exp(Z) + numerator #计算分母的z\n", + "\n", + " return numerator / Z #返回Pw(y|x)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def maxEntropyTrain(self, iter = 500):\n", + " \n", + " for i in range(iter): #设置迭代次数寻找最优解 \n", + " Epxy = self.calcEpxy() #计算“6.2.3 最大熵模型的学习”中的第二个期望(83页最上方哪个) \n", + " sigmaList = [0] * self.n #使用的是IIS,所以设置sigma列表 \n", + " for j in range(self.n): #对于所有的n进行一次遍历 \n", + " sigmaList[j] = (1 / self.M) * np.log(self.Ep_xy[j] / Epxy[j]) #依据“6.3.1 改进的迭代尺度法” 式6.34计算 \n", + " self.w = [self.w[i] + sigmaList[i] for i in range(self.n)] #按照算法6.1步骤二中的(b)更新w\n", + " #单次迭代结束" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def predict(self, X):\n", + " '''\n", + " 预测标签\n", + " :param X:要预测的样本\n", + " :return: 预测值\n", + " ''' \n", + " result = [0] * 2 #因为y只有0和1,所有建立两个长度的概率列表 \n", + " for i in range(2): #循环计算两个概率 \n", + " result[i] = self.calcPwy_x(X, i) #计算样本x的标签为i的概率\n", + " #返回标签\n", + " #max(result):找到result中最大的那个概率值\n", + " #result.index(max(result)):通过最大的那个概率值再找到其索引,索引是0就返回0,1就返回1\n", + " return result.index(max(result))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/.ipynb_checkpoints/06-SVM-checkpoint.ipynb b/.ipynb_checkpoints/06-SVM-checkpoint.ipynb new file mode 100644 index 0000000..ea6c0c5 --- /dev/null +++ b/.ipynb_checkpoints/06-SVM-checkpoint.ipynb @@ -0,0 +1,1361 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 一、SVM原理推导" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1、函数间隔(Function margin)与几何间隔(geometrical margin)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "定义超平面:$$w^{*} \\cdot x+b^{*}=0$$\n", + "\n", + "对点$(x_i,y_i)$:\n", + "\n", + "函数间隔(Function margin):$$\\hat{\\gamma}_{i}=y_{i}\\left(w \\cdot x_{i}+b\\right)$$\n", + "\n", + "几何间隔(geometrical margin):$$\\gamma_{i}=y_{i}\\left(\\frac{w \\cdot x_{i}+{b}}{\\|w\\|}\\right)$$\n", + "\n", + "两者关系:\n", + "$$\n", + "\\gamma=\\frac{\\hat{\\gamma}}{\\|w\\|}\n", + "$$\n", + "令超平面对于所有点$(x_i,y_i)$的函数间隔最小:\n", + "$$\n", + "\\hat{\\gamma}=\\min _{l=1, \\cdots, N} \\hat{\\gamma}_{i}\n", + "$$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2、间隔最大化" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "令几何间隔最大(间隔最小点的间隔最大):\n", + "$$\n", + "\\max _{w, b} \\gamma\n", + "$$\n", + "约束条件:超平面关于每个训练样本的几何间隔至少是$\\gamma$\n", + "$$\n", + "s.t. \\quad y_{i}\\left(\\frac{w\\cdot x_{i}+b}{\\|w\\|}\\right) \\geqslant \\gamma, \\quad i=1,2, \\cdots, N\n", + "$$\n", + "根据几何间隔与函数间隔关系,可改写为:\n", + "$$\n", + "\\begin{array}{cc}{\\max _{w, b}} & {\\frac{\\hat{\\gamma}}{\\|w\\|}} \\\\ {\\text { s.t. }} & {y_{i}\\left(w \\cdot x_{i}+b\\right) \\geqslant \\hat{\\gamma}, \\quad i=1,2, \\cdots, N}\\end{array}\n", + "$$\n", + "\n", + "\n", + "因为函数间隔$\\hat{\\gamma}$与$w、b$等比改变,所以对优化问题无影响,故令$\\hat{\\gamma}=1$:\n", + "$$\n", + "\\begin{array}{ll}{\\min _{w, b}} & {\\frac{1}{2}\\|w\\|^{2}} \\\\ {\\text { s.t. }} & {y_{i}\\left(w \\cdot x_{i}+b\\right)-1 \\geqslant 0, \\quad i=1,2, \\cdots, N}\\end{array}\n", + "$$\n", + "注:决定超平面划分的只有到超平面最近的几个点(即支持向量support vector)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3、Lagrange function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "补充:KKT条件:\n", + "\n", + "$\\min f(x)$\n", + "\n", + "$s.t. g_i(x) \\leqslant 0, i=1,\\cdots,k$\n", + "\n", + "构造拉格朗日函数:$L(x,\\alpha)= f(x) + \\sum \\alpha_i \\cdot g_i(x)$\n", + "\n", + "(1) 拉格朗日函数对各参数求导=0\n", + "\n", + "(2) $\\alpha_i\\geqslant 0$\n", + "\n", + "(3) $\\alpha_i \\cdot g_i(x) = 0$\n", + "\n", + "(4) $g_i(x) \\leqslant 0$ (原始约束条件)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 引入拉格朗日乘子$\\alpha_i$后:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "$$\n", + "L(w, b, \\alpha)=\\frac{1}{2}\\|w\\|^{2}-\\sum_{i=1}^{N} \\alpha_{i} y_{i}\\left(w \\cdot x_{i}+b\\right)+\\sum_{i=1}^{N} \\alpha_{i}\n", + "$$\n", + "即优化问题改为:\n", + "$$\n", + "\\min _{w, b}\\max _{a} L(w, b, \\alpha)\n", + "$$\n", + "因为$\\min \\max f(x)\\geqslant \\max \\min f(x)$,所以等价于\n", + "$$\n", + "\\max _{a} \\min _{w, b} L(w, b, \\alpha)\n", + "$$\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### (1)求$\\min _{w, b} L(w, b, \\alpha)$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "分别对$w、b$求偏导并令其等于0:\n", + "$$\n", + "\\begin{array}{l}{\\nabla_{w} L(w, b, \\alpha)=w-\\sum_{i=1}^{N} \\alpha_{i} y_{i} x_{i}=0} \\\\ {\\nabla_{b} L(w, b, \\alpha)=\\sum_{i=1}^{N} \\alpha_{i} y_{i}=0}\\end{array}\n", + "$$\n", + "得到:\n", + "$$\n", + "\\begin{array}{l}{w=\\sum_{i=1}^{N} \\alpha_{i} y_{i} x_{i}} \\\\ {\\sum_{i=1}^{N} \\alpha_{i} y_{i}=0}\\end{array}\n", + "$$\n", + "将两项带回原式:\n", + "$$\n", + "\\begin{aligned} L(w, b, \\alpha) &=\\frac{1}{2} \\sum_{i=1}^{N} \\sum_{j=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{j}\\left(x_{i} \\cdot x_{j}\\right)-\\sum_{i=1}^{N} \\alpha_{i} y_{i}\\left(\\left(\\sum_{j=1}^{N} \\alpha_{j} y_{j} x_{j}\\right) \\cdot x_{i}+b\\right)+\\sum_{i=1}^{N} \\alpha_{i} \\\\ &=-\\frac{1}{2} \\sum_{i=1}^{N} \\sum_{I=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{j}\\left(x_{i} \\cdot x_{j}\\right)+\\sum_{i=1}^{N} \\alpha_{i} \\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### (2)求 $\\min _{w, b} L(w, b, \\alpha)$对$\\alpha$极大" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{array}{l}\\max _\\alpha \\quad -\\frac{1}{2} \\sum_{i=1}^{N} \\sum_{j=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{j}\\left(x_{i} \\cdot x_{j}\\right)+\\sum_{i=1}^{N} \\alpha_{i}\\\\ {\\text { s.t. }\\quad \\quad \\sum_{i=1}^{N} \\alpha_{l} y_{i}=0} \\\\ {\\alpha_{i} \\geqslant 0, \\quad i=1,2, \\cdots, N}\\end{array}\n", + "$$\n", + "改为极小问题:\n", + "$$\n", + "\\min _{\\alpha} \\frac{1}{2} \\sum_{i=1}^{N} \\sum_{j=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{j}\\left(x_{i} \\cdot x_{j}\\right)-\\sum_{i=1}^{N} \\alpha_{i}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4、松弛变量 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "某些噪音不能满足函数间隔大于1的约束条件,因此引入松弛变量$\\xi_i \\geqslant 0$,约束条件变为:\n", + "$$\n", + "y_{i}\\left(w \\cdot x_{i}+b\\right) \\geqslant 1-\\xi_{i}\n", + "$$\n", + "$$\n", + "\\xi_{i} \\geqslant 0, \\quad i=1,2, \\cdots, N\n", + "$$\n", + "目标函数变为,其中C为惩罚参数:\n", + "$$\n", + "\\frac{1}{2}\\|w\\|^{2}+C \\sum_{i=1}^{N} \\xi_{i}\n", + "$$\n", + "加入松弛变量后拉格朗日函数为:\n", + "$$\n", + "L(w, b, \\xi, \\alpha, \\mu) \\equiv \\frac{1}{2}\\|w\\|^{2}+C \\sum_{i=1}^{N} \\xi_{i}-\\sum_{i=1}^{N} \\alpha_{i}\\left(y_{i}\\left(w \\cdot x_{i}+b\\right)-1+\\xi_{i}\\right)-\\sum_{i=1}^{N} \\mu_{i} \\xi_{i}\n", + "$$\n", + "同上求对偶问题后,最终解为:(具体推导见书P110-111)\n", + "$$\n", + "\\min _{a} \\frac{1}{2} \\sum_{i=1}^{N} \\sum_{j=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{j}\\left(x_{i} \\cdot x_{j}\\right)-\\sum_{i=1}^{N} \\alpha_{t}\n", + "$$\n", + "$$\n", + "s.t. \\quad \\sum_{i=1}^{N} \\alpha_{i} y_{i}=0\n", + "$$\n", + "$$\n", + "0 \\leqslant \\alpha_{i} \\leqslant C, \\quad i=1,2, \\cdots, N\n", + "$$\n", + "\n", + "\n", + "\n", + "之后求得满足约束并找到最优解的$\\alpha$即可,之后通过$w$的计算公式根据$\\alpha$求得,而$w$知道后将$w$带入$wx+b=0$也可求得$b$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5、核函数 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1、将线性不可分的数据升维\n", + "\n", + "2、减少计算量\n", + "我们看min后面这个式子,其中α和y都是标量,直接计算就可以,唯一让人难受的是xi与xj的点积,它是向量之间的点积,同时前面有求和项,也就是说在计算过程中是需要计算任意两个向量之间的点积的。这里就引申出一个问题,例如在Mnist数据集中,训练集有6万个样本,也就是6万个向量,现在计算机速度越来越快了,6万*6万个标量还行,算起来没多久,可是如果是向量呢?Mnist中每个向量由784维,也就是说单独的两个向量点积就需要784次运算,再加上6万个样本,其实速度是非常慢的。\n", + "\n", + "高斯核函数\n", + "$$\n", + "K(x, z)=\\exp \\left(-\\frac{\\|x-z\\|^{2}}{2 \\sigma^{2}}\\right) \\quad (式5.1)\n", + "$$\n", + "$$\n", + "W(\\alpha)=\\frac{1}{2} \\sum_{i=1}^{N} \\sum_{j=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{i} K\\left(x, z\\right)-\\sum_{i=1}^{N} \\alpha_{i}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6、SMO " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "参考:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html\n", + "\n", + "$\\alpha$是一个仍然存在的未知数,但其他好像我们目前都是可以得到的。那我们怎么求解这个问题的最优解呢?有一个定理是这样的:如果一个问题是最优解,那么它一定满足KKT条件,如果不满足,一定不是最优解,这是充分必要条件。所以这里引发出了一个思考,如果我们找到了最优解,那$\\alpha$的取值一定是满足KKT条件地。所以需要不断得去调整$\\alpha$的值,直到最后所有的$\\alpha$都满足$KKT$条件,这时候我一定得到了最优解。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "假设选择2个变量$\\alpha_{1}、\\alpha_{2}$,其它变量$\\alpha_{(3,\\cdots,N)}$为固定值:\n", + "$$\n", + "\\min _{\\alpha_{1}, \\alpha_{2}} \\quad W\\left(\\alpha_{1}, \\alpha_{2}\\right)=\\frac{1}{2} K_{11} \\alpha_{1}^{2}+\\frac{1}{2} K_{22} \\alpha_{2}^{2}+y_{1} y_{2} K_{12} \\alpha_{1} \\alpha_{2}-\\left(\\alpha_{1}+\\alpha_{2}\\right)+y_{1} \\alpha_{1} \\sum_{i=3}^{N} y_{i} \\alpha_{i} K_{i 1}+y_{2} \\alpha_{2} \\sum_{i=3}^{N} y_{i} \\alpha_{i} K_{i 2}+constant\\quad(6.1)\n", + "$$\n", + "(已省略不含$\\alpha_{1}、\\alpha_{2}$的常数项)\n", + "$$\n", + "\\begin{array}{c}{\\text { s.t. } \\quad \\alpha_{1} y_{1}+\\alpha_{2} y_{2}=-\\sum_{i=3}^{N} y_{i} \\alpha_{i}=\\zeta} \\\\ {0 \\leqslant \\alpha_{i} \\leqslant C, \\quad i=1,2}\\end{array}\n", + "$$\n", + "由第一个约束项可得:$\\alpha_{1}=\\frac{\\xi-\\alpha_2 y_2}{y_1}$,用$\\alpha_2$表示$\\alpha_1$\n", + "\n", + "故$ W(\\alpha_{1}, \\alpha_{2})$可看做关于$\\alpha_2$的一元二次函数,通过对$W$进行求导等于0可以得到$\\alpha_2$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image of Yaktocat](http://images.cnblogs.com/cnblogs_com/jerrylead/201103/201103182043119717.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "对于$\\alpha_{1} y_{1}+\\alpha_{2} y_{2}=\\zeta$:\n", + "\n", + "当$y_1\\neq y_2$,即$y_1、y_2$分别为-1,1时:$\\alpha_1-\\alpha_2=k$\n", + "\n", + "当$y_1=y_2$,即$y_1、y_2$同为-1,1时:$\\alpha_1+\\alpha_2=k$\n", + "\n", + "如图所示:$\\alpha_1、\\alpha_2$既要在矩形方框内,也要在直线上,因此:\n", + "$$\n", + "L \\leqslant \\alpha_{2} \\leqslant H\n", + "$$\n", + "当$y_1\\neq y_2$,\n", + "$$\n", + "L=\\max \\left(0, \\alpha_{2}-\\alpha_{1}\\right) \\quad H=\\min \\left(C, C+\\alpha_{2}-\\alpha_{1}\\right)\n", + "$$\n", + "当$y_1=y_2$,\n", + "$$\n", + "L=\\max \\left(0, \\alpha_{2}+\\alpha_{1}-C\\right) \\quad H=\\min \\left(C, \\alpha_{2}+\\alpha_{1}\\right)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### SMO变量的选择方法 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "前文已知:\n", + "$$\n", + "{w}=\\sum_{i=1}^{N} y_{i} \\alpha_{i} {x}_{i}, \\quad b={w} \\cdot {x}_{k}-y_{k}\n", + "$$\n", + "$$\n", + "g(x)={w} \\cdot {x}-b\n", + "$$\n", + "所以:\n", + "$$\n", + "g(x)=\\sum_{j=1}^{N} y_{j} \\alpha_{j} K\\left({x}, {z}\\right)-b \\quad (6.6)\n", + "$$\n", + "$E_i$为预测值与真实值之差:\n", + "$$\n", + "E_{i}=g\\left(x_{i}\\right)-y_{i}=\\left(\\sum_{j=1}^{N} \\alpha_{j} y_{j} K\\left(x_{j}, x_{i}\\right)+b\\right)-y_{i}, \\quad i=1,2\n", + "$$\n", + "对于式(6.1):\n", + "$$\n", + "\\min _{\\alpha_{1}, \\alpha_{2}} \\quad W\\left(\\alpha_{1}, \\alpha_{2}\\right)=\\frac{1}{2} K_{11} \\alpha_{1}^{2}+\\frac{1}{2} K_{22} \\alpha_{2}^{2}+y_{1} y_{2} K_{12} \\alpha_{1} \\alpha_{2}-\\left(\\alpha_{1}+\\alpha_{2}\\right)+y_{1} \\alpha_{1} \\sum_{i=3}^{N} y_{i} \\alpha_{i} K_{i 1}+y_{2} \\alpha_{2} \\sum_{i=3}^{N} y_{i} \\alpha_{i} K_{i 2}+constant\n", + "$$\n", + "引进记号:\n", + "$$\n", + "v_{i}=\\sum_{j=3}^{N} \\alpha_{j} y_{j} K\\left(x_{i}, x_{j}\\right)=g\\left(x_{i}\\right)-\\sum_{j=1}^{2} \\alpha_{j} y_{j} K\\left(x_{i}, x_{j}\\right)-b, \\quad i=1,2\n", + "$$\n", + "带入式(6.1):\n", + "$$\n", + "\\begin{aligned} W\\left(\\alpha_{1}, \\alpha_{2}\\right)=& \\frac{1}{2} K_{11} \\alpha_{1}^{2}+\\frac{1}{2} K_{22} \\alpha_{2}^{2}+y_{1} y_{2} K_{12} \\alpha_{1} \\alpha_{2} -\\left(\\alpha_{1}+\\alpha_{2}\\right)+y_{1} v_{1} \\alpha_{1}+y_{2} v_{2} \\alpha_{2} \\end{aligned}\\quad(6.2)\n", + "$$\n", + "由$\\alpha_{1}=\\frac{\\xi-\\alpha_2 y_2}{y_1},y_i^{2}=1$:\n", + "$$\n", + "\\alpha_{1}=\\left(\\xi-y_{2} \\alpha_{2}\\right) y_{1}\n", + "$$\n", + "带入式(6.2):\n", + "$$\n", + "\\begin{aligned} W\\left(\\alpha_{2}\\right)=& \\frac{1}{2} K_{11}\\left(\\zeta-\\alpha_{2} y_{2}\\right)^{2}+\\frac{1}{2} K_{22} \\alpha_{2}^{2}+y_{2} K_{12}\\left(\\zeta-\\alpha_{2} y_{2}\\right) \\alpha_{2} -\\left(\\zeta-\\alpha_{2} y_{2}\\right) y_{1}-\\alpha_{2}+v_{1}\\left(5-\\alpha_{2} y_{2}\\right)+y_{2} v_{2} \\alpha_{2} \\end{aligned}\n", + "$$\n", + "对$\\alpha_2$求导=0:\n", + "$$\n", + "\\begin{aligned} \\frac{\\partial W}{\\partial \\alpha_{2}}= K_{11} \\alpha_{2}+K_{22} \\alpha_{2}-2 K_{12} \\alpha_{2}-K_{11}\\zeta y_2+K_{12} \\zeta y_{2}+y_{1} y_{2}-1-v_{1} y_{2}+y_{2} v_{2}=0 \\end{aligned}\n", + "$$\n", + "化简:\n", + "$$\n", + "\\left(K_{11}+K_{22}-2 K_{12}\\right) \\alpha_{2}=y_{2}\\left(y_{2}-y_{1}+\\zeta K_{11}-\\zeta K_{12}+v_{1}-v_{2}\\right)\n", + "$$\n", + "\n", + "$$\n", + "=y_{2}\\left[y_{2}-y_{1}+\\xi K_{11}-\\xi K_{12}+\\left(g\\left(x_{1}\\right)-\\sum_{j=1}^{2} y_{j} \\alpha_{j} K_{1 j}-b\\right)\\right.-\\left(g\\left(x_{2}\\right)-\\sum_{j=1}^{2} y_{j} \\alpha_{j} K_{2 j}-b\\right)]\n", + "$$\n", + "将$\\zeta=\\alpha_{1}^{\\text { old }} y_{1}+\\alpha_{2}^{\\text { old }} y_{2}$代入:\n", + "$$\n", + "\\begin{aligned}\\left(K_{11}+K_{22}-2 K_{12}\\right) \\alpha_{2}^{\\text { new, unclipped }} &=y_{2}\\left(\\left(K_{11}+K_{22}-2 K_{12}\\right) \\alpha_{2}^{\\text { old }} y_{2}+y_{2}-y_{1}+g\\left(x_{1}\\right)-g\\left(x_{2}\\right)\\right) \\\\ &=\\left(K_{11}+K_{22}-2 K_{12}\\right) \\alpha_{2}^{\\text { old }}+y_{2}\\left(E_{1}-E_{2}\\right) \\end{aligned}\n", + "$$\n", + "令$\\eta=K_{11}+K_{22}-2 K_{12},即||K(x_1)-K(x_2)||^{2}$:\n", + "$$\n", + "\\alpha_{2}^{\\mathrm{new}, \\mathrm{unclipped}}=\\alpha_{2}^{\\mathrm{old}}+\\frac{y_{2}\\left(E_{1}-E_{2}\\right)}{\\eta}\n", + "$$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "使用$\\alpha_2^{new, unclipped}$表示求导求出来的$\\alpha_2$,然而最后的$\\alpha_2^{new}$,要根据下面情况得到:\n", + "$$\n", + "\\alpha_{2}^{\\text { new }}=\\left\\{\\begin{array}{ll}{H} & {\\text { if } \\alpha_{2}^{\\text { new, unclipped }}>H} \\\\ {\\alpha_{2}^{\\text { new, unclipped}}} & {\\text { if } L \\leq \\alpha_{2}^{\\text { new, unclipped }} \\leq H} \\\\ {L} & {\\text { if } \\alpha_{2}^{n e w, u n c l i p p e d}= 1): #依据6.3 math.fabs绝对值\n", + " return True\n", + " \n", + " elif (math.fabs(self.alpha[i] - self.C) < self.toler) and (yi * gxi <= 1): #依据6.5\n", + " return True\n", + " #依据6.4\n", + " elif (self.alpha[i] > -self.toler) and (self.alpha[i] < (self.C + self.toler)) and (math.fabs(yi * gxi - 1) < self.toler): \n", + " \n", + " return True\n", + " return False\n", + " \n", + " def calc_gxi(self, i):\n", + " '''\n", + " 计算g(xi)\n", + " 依据“7.101 两个变量二次规划的求解方法”式6.6\n", + " :param i:x的下标\n", + " :return: g(xi)的值\n", + " ''' \n", + " gxi = 0 #初始化g(xi)\n", + " #因为g(xi)是一个求和式+b的形式,普通做法应该是直接求出求和式中的每一项再相加即可\n", + " #但是读者应该有发现,在“7.2.3 支持向量”开头第一句话有说到“对应于α>0的样本点\n", + " #(xi, yi)的实例xi称为支持向量”。也就是说只有支持向量的α是大于0的,在求和式内的\n", + " #对应的αi*yi*K(xi, xj)不为0,非支持向量的αi*yi*K(xi, xj)必为0,也就不需要参与\n", + " #到计算中。也就是说,在g(xi)内部求和式的运算中,只需要计算α>0的部分,其余部分可\n", + " #忽略。因为支持向量的数量是比较少的,这样可以再很大程度上节约时间\n", + " #从另一角度看,抛掉支持向量的概念,如果α为0,αi*yi*K(xi, xj)本身也必为0,从数学\n", + " #角度上将也可以扔掉不算\n", + " \n", + " index = [i for i, alpha in enumerate(self.alpha) if alpha != 0] #index获得非零α的下标,并做成列表形式方便后续遍历 \n", + " #enumerate()于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中\n", + " #i :索引,alpha:元素\n", + " \n", + " for j in index: #遍历每一个非零α,i为非零α的下标 \n", + " gxi += self.alpha[j] * self.trainLabelMat[j] * self.k[j][i] #计算g(xi)\n", + " gxi += self.b #求和结束后再单独加上偏置b\n", + "\n", + " return gxi " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "计算$E_{i}=g\\left(x_{i}\\right)-y_{i}=\\left(\\sum_{j=1}^{N} \\alpha_{j} y_{j} K\\left(x_{j}, x_{i}\\right)+b\\right)-y_{i}, \\quad i=1,2$" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "class SVM:\n", + " def calcEi(self, i):\n", + " '''\n", + " 计算Ei\n", + " 根据“7.4.1 两个变量二次规划的求解方法”式7.105\n", + " :param i: E的下标\n", + " :return:\n", + " ''' \n", + " gxi = self.calc_gxi(i) #计算g(xi) \n", + " return gxi - self.trainLabelMat[i] #Ei = g(xi) - yi,直接将结果作为Ei返回" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "SMO中选择第二个变量\n", + "\n", + "这一步是一个优化性的算法,实际上书上算法中初始时每一个Ei应当都为-yi(因为g(xi)由于初始α为0,必然为0),然后每次按照书中第二步去计算不同的E2来使得|E1-E2|最大,但是时间耗费太长了\n", + "\n", + "在Ei的初始化中,由于所有α为0,所以一开始是设置Ei初始值为-yi。这里修改为与α一致,初始状态所有Ei为0,在运行过程中再逐步更新。\n", + "因此在挑选第二个变量时,只考虑更新过Ei的变量,但是存在问题\n", + "\n", + "1.当程序刚开始运行时,所有Ei都是0,那挑谁呢?\n", + "\n", + "当程序检测到并没有Ei为非0时,将会使用随机函数随机挑选一个\n", + "\n", + "2.怎么保证能和书中的方法保持一样的有效性呢?\n", + "\n", + "在挑选第一个变量时是有一个大循环的,它能保证遍历到每一个xi,并更新xi的值,在程序运行后期后其实绝大部分Ei都已经更新完毕了。下方优化算法只不过是在程序运行的前半程进行了时间的加速,在程序后期其实与未优化的情况无异" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "class SVM:\n", + " def getAlphaJ(self, E1, i):\n", + " '''\n", + " SMO中选择第二个变量\n", + " :param E1: 第一个变量的E1\n", + " :param i: 第一个变量α的下标\n", + " :return: E2,α2的下标\n", + " ''' \n", + " E2 = 0 #初始化E2 \n", + " maxE1_E2 = -1 #初始化|E1-E2|为-1\n", + " maxIndex = -1 #初始化第二个变量的下标\n", + " nozeroE = [i for i, Ei in enumerate(self.E) if Ei != 0] #获得Ei非0的对应索引组成的列表,列表内容为非0Ei的下标i\n", + "\n", + " for j in nozeroE: #对每个非零Ei的下标i进行遍历\n", + " E2_tmp = self.calcEi(j) #计算E2\n", + " if math.fabs(E1 - E2_tmp) > maxE1_E2: #如果|E1-E2|大于目前最大值\n", + " maxE1_E2 = math.fabs(E1 - E2_tmp) #更新最大值\n", + " E2 = E2_tmp #更新最大值E2 \n", + " maxIndex = j #更新最大值E2的索引j\n", + " if maxIndex == -1: #如果列表中没有非0元素了(对应程序最开始运行时的情况)\n", + " maxIndex = i\n", + " while maxIndex == i: \n", + " maxIndex = int(random.uniform(0, self.m)) #获得随机数,如果随机数与第一个变量的下标i一致则重新随机 \n", + " E2 = self.calcEi(maxIndex) #获得E2\n", + "\n", + " return E2, maxIndex #返回第二个变量的E2值以及其索引" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "import numpy as np\n", + "class SVM:\n", + " def __init__(self, trainDataList, trainLabelList, sigma = 10, C = 200, toler = 0.001):\n", + " '''\n", + " SVM相关参数初始化\n", + " :param trainDataList:训练数据集\n", + " :param trainLabelList: 训练测试集\n", + " :param sigma: 高斯核中分母的σ\n", + " :param C:软间隔中的惩罚参数\n", + " :param toler:松弛变量\n", + " '''\n", + " self.trainDataMat = np.mat(trainDataList) #训练数据集\n", + " self.trainLabelMat = np.mat(trainLabelList).T #训练标签集,为了方便后续运算提前做了转置,变为列向量\n", + " self.m, self.n = np.shape(self.trainDataMat) #m:训练集数量 n:样本特征数目\n", + " self.sigma = sigma #高斯核分母中的σ\n", + " self.C = C #惩罚参数\n", + " self.toler = toler #松弛变量\n", + " self.k = self.calcKernel() #核函数(初始化时提前计算)\n", + " self.b = 0 #SVM中的偏置b\n", + " self.alpha = [0] * self.trainDataMat.shape[0] # α 长度为训练集数目\n", + " self.E = [0 * self.trainLabelMat[i, 0] for i in range(self.trainLabelMat.shape[0])] #SMO运算过程中的Ei\n", + " self.supportVecIndex = []\n", + " \n", + " def calcKernel(self):\n", + " '''\n", + " 计算核函数\n", + " 使用的是高斯核 \n", + " :return: 高斯核矩阵\n", + " ''' \n", + " k = [[0 for i in range(self.m)] for j in range(self.m)] #初始化高斯核结果矩阵 大小 = 训练集长度m * 训练集长度m #k[i][j] = Xi * Xj\n", + " \n", + " for i in range(self.m): #大循环遍历式5.1中的x \n", + " if i % 100 == 0:\n", + " print('construct the kernel:', i, self.m) \n", + " X = self.trainDataMat[i, :] #得到式5.1中的X \n", + " \n", + " for j in range(i, self.m): \n", + " #小循环遍历Xj,Xj为式5.1中的Z # 由于 Xi * Xj 等于 Xj * Xi,一次计算得到的结果可以\n", + " # 同时放在k[i][j]和k[j][i]中,这样一个矩阵只需要计算上半部分即可,所以小循环直接从i开始\n", + " \n", + " Z = self.trainDataMat[j, :] #获得Z \n", + " frac = (X - Z) * (X - Z).T #先计算||X - Z||^2 \n", + " result = np.exp(-1 * frac / (2 * self.sigma**2)) #分子除以分母后去指数,得到的即为高斯核结果 \n", + " k[i][j] = result #将Xi*Xj的结果存放入k中(上半部分与下半部分相同)\n", + " k[j][i] = result \n", + " return k #返回高斯核矩阵\n", + "\n", + " def isSatisfyKKT(self, i):\n", + " '''\n", + " 查看第i个α是否满足KKT条件\n", + " :param i:α的下标\n", + " :return:\n", + " True:满足\n", + " False:不满足\n", + " '''\n", + " gxi = self.calc_gxi(i)\n", + " yi = self.trainLabelMat[i] #判断依据参照“第1个变量的选择”(加入了松弛变量)\n", + "\n", + "\n", + " if (math.fabs(self.alpha[i]) < self.toler) and (yi * gxi >= 1): #依据6.3 math.fabs绝对值\n", + " return True\n", + " \n", + " elif (math.fabs(self.alpha[i] - self.C) < self.toler) and (yi * gxi <= 1): #依据6.5\n", + " return True\n", + " #依据6.4\n", + " elif (self.alpha[i] > -self.toler) and (self.alpha[i] < (self.C + self.toler)) and (math.fabs(yi * gxi - 1) < self.toler): \n", + " \n", + " return True\n", + " return False\n", + " \n", + " def calc_gxi(self, i):\n", + " '''\n", + " 计算g(xi)\n", + " 依据“7.101 两个变量二次规划的求解方法”式6.6\n", + " :param i:x的下标\n", + " :return: g(xi)的值\n", + " ''' \n", + " gxi = 0 #初始化g(xi)\n", + " #因为g(xi)是一个求和式+b的形式,普通做法应该是直接求出求和式中的每一项再相加即可\n", + " #但是读者应该有发现,在“7.2.3 支持向量”开头第一句话有说到“对应于α>0的样本点\n", + " #(xi, yi)的实例xi称为支持向量”。也就是说只有支持向量的α是大于0的,在求和式内的\n", + " #对应的αi*yi*K(xi, xj)不为0,非支持向量的αi*yi*K(xi, xj)必为0,也就不需要参与\n", + " #到计算中。也就是说,在g(xi)内部求和式的运算中,只需要计算α>0的部分,其余部分可\n", + " #忽略。因为支持向量的数量是比较少的,这样可以再很大程度上节约时间\n", + " #从另一角度看,抛掉支持向量的概念,如果α为0,αi*yi*K(xi, xj)本身也必为0,从数学\n", + " #角度上将也可以扔掉不算\n", + " \n", + " index = [i for i, alpha in enumerate(self.alpha) if alpha != 0] #index获得非零α的下标,并做成列表形式方便后续遍历 \n", + " #enumerate()于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中\n", + " #i :索引,alpha:元素\n", + " \n", + " for j in index: #遍历每一个非零α,i为非零α的下标 \n", + " gxi += self.alpha[j] * self.trainLabelMat[j] * self.k[j][i] #计算g(xi)\n", + " gxi += self.b #求和结束后再单独加上偏置b\n", + "\n", + " return gxi\n", + "\n", + " def calcEi(self, i):\n", + " '''\n", + " 计算Ei\n", + " 根据“7.4.1 两个变量二次规划的求解方法”式7.105\n", + " :param i: E的下标\n", + " :return:\n", + " ''' \n", + " gxi = self.calc_gxi(i) #计算g(xi) \n", + " return gxi - self.trainLabelMat[i] #Ei = g(xi) - yi,直接将结果作为Ei返回\n", + "\n", + " def getAlphaJ(self, E1, i):\n", + " '''\n", + " SMO中选择第二个变量\n", + " :param E1: 第一个变量的E1\n", + " :param i: 第一个变量α的下标\n", + " :return: E2,α2的下标\n", + " ''' \n", + " E2 = 0 #初始化E2 \n", + " maxE1_E2 = -1 #初始化|E1-E2|为-1\n", + " maxIndex = -1 #初始化第二个变量的下标\n", + " nozeroE = [i for i, Ei in enumerate(self.E) if Ei != 0] #获得Ei非0的对应索引组成的列表,列表内容为非0Ei的下标i\n", + "\n", + " for j in nozeroE: #对每个非零Ei的下标i进行遍历\n", + " E2_tmp = self.calcEi(j) #计算E2\n", + " if math.fabs(E1 - E2_tmp) > maxE1_E2: #如果|E1-E2|大于目前最大值\n", + " maxE1_E2 = math.fabs(E1 - E2_tmp) #更新最大值\n", + " E2 = E2_tmp #更新最大值E2 \n", + " maxIndex = j #更新最大值E2的索引j\n", + " if maxIndex == -1: #如果列表中没有非0元素了(对应程序最开始运行时的情况)\n", + " maxIndex = i\n", + " while maxIndex == i: \n", + " maxIndex = int(np.random.uniform(0, self.m)) #获得随机数,如果随机数与第一个变量的下标i一致则重新随机 \n", + " E2 = self.calcEi(maxIndex) #获得E2\n", + "\n", + " return E2, maxIndex #返回第二个变量的E2值以及其索引\n", + "\n", + " def train(self, iter = 100): #iterStep:迭代次数,超过设置次数还未收敛则强制停止 \n", + " iterStep = 0\n", + " parameterChanged = 1 #parameterChanged:单次迭代中有参数改变则增加1\n", + " #parameterChanged==0时表示上次迭代没有参数改变,如果遍历了一遍都没有参数改变,说明达到了收敛状态,可以停止了\n", + "\n", + " while (iterStep < iter) and (parameterChanged > 0): \n", + " print('iter:%d:%d'%( iterStep, iter)) #打印当前迭代轮数 \n", + " iterStep += 1 #迭代步数加1\n", + " \n", + " parameterChanged = 0 #新的一轮将参数改变标志位重新置0\n", + " \n", + " for i in range(self.m): #大循环遍历所有样本,用于找SMO中第一个变量 \n", + " if self.isSatisfyKKT(i) == False: #查看第一个遍历是否满足KKT条件,如果不满足则作为SMO中第一个变量从而进行优化\n", + " #如果下标为i的α不满足KKT条件,则进行优化\n", + " #第一个变量α的下标i已经确定,接下来按照第二步选择变量2。由于变量2的选择中涉及到|E1 - E2|,因此先计算E1\n", + " E1 = self.calcEi(i)\n", + " \n", + " E2, j = self.getAlphaJ(E1, i) #选择第2个变量 #参考“7.4.1两个变量二次规划的求解方法” P126 下半部分\n", + " \n", + " y1 = self.trainLabelMat[i] #获得两个变量的标签\n", + " y2 = self.trainLabelMat[j]\n", + " \n", + " alphaOld_1 = self.alpha[i] #复制α值作为old值\n", + " alphaOld_2 = self.alpha[j]\n", + " \n", + " if y1 != y2: #依据标签是否一致来生成不同的L和H\n", + " L = max(0, alphaOld_2 - alphaOld_1)\n", + " H = min(self.C, self.C + alphaOld_2 - alphaOld_1)\n", + " else:\n", + " L = max(0, alphaOld_2 + alphaOld_1 - self.C)\n", + " H = min(self.C, alphaOld_2 + alphaOld_1)\n", + " \n", + " if L == H: continue #如果两者相等,说明该变量无法再优化,直接跳到下一次循环\n", + "\n", + " k11 = self.k[i][i] #计算α的新值 \n", + " k22 = self.k[j][j] #依据“7.4.1两个变量二次规划的求解方法”式7.106更新α2值\n", + " k21 = self.k[j][i] #先获得几个k值,用来计算事7.106中的分母η\n", + " k12 = self.k[i][j]\n", + " \n", + " alphaNew_2 = alphaOld_2 + y2 * (E1 - E2) / (k11 + k22 - 2 * k12) #依据式7.106更新α2,该α2还未经剪切\n", + " \n", + " if alphaNew_2 < L: alphaNew_2 = L #剪切α2\n", + " elif alphaNew_2 > H: alphaNew_2 = H\n", + " \n", + " alphaNew_1 = alphaOld_1 + y1 * y2 * (alphaOld_2 - alphaNew_2) #更新α1,依据式7.109\n", + " #依据“7.4.2 变量的选择方法”第三步式7.115和7.116计算b1和b2\n", + " b1New = -1 * E1 - y1 * k11 * (alphaNew_1 - alphaOld_1) - y2 * k21 * (alphaNew_2 - alphaOld_2) + self.b\n", + " b2New = -1 * E2 - y1 * k12 * (alphaNew_1 - alphaOld_1) - y2 * k22 * (alphaNew_2 - alphaOld_2) + self.b\n", + " \n", + " if (alphaNew_1 > 0) and (alphaNew_1 < self.C): #依据α1和α2的值范围确定新b\n", + " bNew = b1New\n", + " elif (alphaNew_2 > 0) and (alphaNew_2 < self.C):\n", + " bNew = b2New\n", + " else:\n", + " bNew = (b1New + b2New) / 2\n", + " \n", + " self.alpha[i] = alphaNew_1 #将更新后的各类值写入,进行更新\n", + " self.alpha[j] = alphaNew_2\n", + " self.b = bNew\n", + " self.E[i] = self.calcEi(i)\n", + " self.E[j] = self.calcEi(j) \n", + " \n", + " if math.fabs(alphaNew_2 - alphaOld_2) >= 0.00001: #如果α2的改变量过于小,就认为该参数未改变,不增加parameterChanged值\n", + " parameterChanged += 1 #反之则自增1\n", + " print(\"iter: %d i:%d, pairs changed %d\" % (iterStep, i, parameterChanged)) #打印迭代轮数,i值,该迭代轮数修改α数目\n", + "\n", + " for i in range(self.m): #全部计算结束后,重新遍历一遍α,查找里面的支持向量\n", + " if self.alpha[i] > 0: #如果α>0,说明是支持向量\n", + " self.supportVecIndex.append(i) #将支持向量的索引保存起来\n", + " \n", + " def calcSinglKernel(self, x1, x2):\n", + " '''\n", + " 单独计算核函数\n", + " :param x1:向量1\n", + " :param x2: 向量2\n", + " :return: 核函数结果\n", + " '''\n", + " result = (x1 - x2) * (x1 - x2).T #按照“7.3.3 常用核函数”式7.90计算高斯核\n", + " result = np.exp(-1 * result / (2 * self.sigma ** 2)) #返回结果\n", + " return np.exp(result)\n", + " \n", + " def predict(self, x):\n", + " '''\n", + " 对样本的标签进行预测\n", + " 公式依据“7.3.4 非线性支持向量分类机”中的式7.94\n", + " :param x: 要预测的样本x\n", + " :return: 预测结果\n", + " '''\n", + " result = 0\n", + " for i in self.supportVecIndex:\n", + " #遍历所有支持向量,计算求和式\n", + " #如果是非支持向量,求和子式必为0,没有必须进行计算\n", + " #这也是为什么在SVM最后只有支持向量起作用\n", + " \n", + " tmp = self.calcSinglKernel(self.trainDataMat[i, :], np.mat(x)) #先单独将核函数计算出来 \n", + " result += self.alpha[i] * self.trainLabelMat[i] * tmp #对每一项子式进行求和,最终计算得到求和项的值\n", + " result += self.b #求和项计算结束后加上偏置b\n", + " \n", + " return np.sign(result) #使用sign函数返回预测结果" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "construct the kernel: 0 1000\n", + "construct the kernel: 100 1000\n", + "construct the kernel: 200 1000\n", + "construct the kernel: 300 1000\n", + "construct the kernel: 400 1000\n", + "construct the kernel: 500 1000\n", + "construct the kernel: 600 1000\n", + "construct the kernel: 700 1000\n", + "construct the kernel: 800 1000\n", + "construct the kernel: 900 1000\n" + ] + } + ], + "source": [ + "svm = SVM(trainData[:1000], trainLabel[:1000], 10, 200, 0.001)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iter:0:100\n", + "iter: 1 i:16, pairs changed 1\n", + "iter: 1 i:21, pairs changed 1\n", + "iter: 1 i:22, pairs changed 2\n", + "iter: 1 i:34, pairs changed 2\n", + "iter: 1 i:35, pairs changed 3\n", + "iter: 1 i:37, pairs changed 3\n", + "iter: 1 i:38, pairs changed 4\n", + "iter: 1 i:51, pairs changed 4\n", + "iter: 1 i:52, pairs changed 5\n", + "iter: 1 i:56, pairs changed 5\n", + "iter: 1 i:57, pairs changed 6\n", + "iter: 1 i:63, pairs changed 6\n", + "iter: 1 i:64, pairs changed 7\n", + "iter: 1 i:68, pairs changed 7\n", + "iter: 1 i:69, pairs changed 7\n", + "iter: 1 i:70, pairs changed 8\n", + "iter: 1 i:71, pairs changed 9\n", + "iter: 1 i:75, pairs changed 9\n", + "iter: 1 i:76, pairs changed 10\n", + "iter: 1 i:81, pairs changed 10\n", + "iter: 1 i:82, pairs changed 11\n", + "iter: 1 i:88, pairs changed 11\n", + "iter: 1 i:89, pairs changed 12\n", + "iter: 1 i:95, pairs changed 12\n", + "iter: 1 i:96, pairs changed 13\n", + "iter: 1 i:108, pairs changed 13\n", + "iter: 1 i:109, pairs changed 14\n", + "iter: 1 i:114, pairs changed 14\n", + "iter: 1 i:115, pairs changed 15\n", + "iter: 1 i:118, pairs changed 15\n", + "iter: 1 i:119, pairs changed 15\n", + "iter: 1 i:120, pairs changed 16\n", + "iter: 1 i:121, pairs changed 16\n", + "iter: 1 i:122, pairs changed 17\n", + "iter: 1 i:123, pairs changed 18\n", + "iter: 1 i:156, pairs changed 18\n", + "iter: 1 i:157, pairs changed 19\n", + "iter: 1 i:169, pairs changed 19\n", + "iter: 1 i:170, pairs changed 20\n", + "iter: 1 i:192, pairs changed 20\n", + "iter: 1 i:193, pairs changed 21\n", + "iter: 1 i:206, pairs changed 21\n", + "iter: 1 i:207, pairs changed 22\n", + "iter: 1 i:209, pairs changed 22\n", + "iter: 1 i:210, pairs changed 22\n", + "iter: 1 i:211, pairs changed 23\n", + "iter: 1 i:212, pairs changed 24\n", + "iter: 1 i:216, pairs changed 24\n", + "iter: 1 i:217, pairs changed 25\n", + "iter: 1 i:229, pairs changed 25\n", + "iter: 1 i:230, pairs changed 26\n", + "iter: 1 i:232, pairs changed 26\n", + "iter: 1 i:233, pairs changed 27\n", + "iter: 1 i:234, pairs changed 27\n", + "iter: 1 i:246, pairs changed 27\n", + "iter: 1 i:247, pairs changed 28\n", + "iter: 1 i:249, pairs changed 28\n", + "iter: 1 i:250, pairs changed 29\n", + "iter: 1 i:260, pairs changed 29\n", + "iter: 1 i:261, pairs changed 30\n", + "iter: 1 i:283, pairs changed 30\n", + "iter: 1 i:284, pairs changed 31\n", + "iter: 1 i:293, pairs changed 31\n", + "iter: 1 i:294, pairs changed 32\n", + "iter: 1 i:296, pairs changed 32\n", + "iter: 1 i:297, pairs changed 33\n", + "iter: 1 i:303, pairs changed 33\n", + "iter: 1 i:304, pairs changed 34\n", + "iter: 1 i:320, pairs changed 34\n", + "iter: 1 i:321, pairs changed 35\n", + "iter: 1 i:326, pairs changed 35\n", + "iter: 1 i:327, pairs changed 36\n", + "iter: 1 i:359, pairs changed 36\n", + "iter: 1 i:360, pairs changed 37\n", + "iter: 1 i:399, pairs changed 37\n", + "iter: 1 i:400, pairs changed 38\n", + "iter: 1 i:427, pairs changed 38\n", + "iter: 1 i:428, pairs changed 39\n", + "iter: 1 i:429, pairs changed 39\n", + "iter: 1 i:430, pairs changed 40\n", + "iter: 1 i:435, pairs changed 40\n", + "iter: 1 i:436, pairs changed 41\n", + "iter: 1 i:440, pairs changed 41\n", + "iter: 1 i:441, pairs changed 42\n", + "iter: 1 i:451, pairs changed 42\n", + "iter: 1 i:452, pairs changed 43\n", + "iter: 1 i:453, pairs changed 43\n", + "iter: 1 i:454, pairs changed 44\n", + "iter: 1 i:458, pairs changed 44\n", + "iter: 1 i:459, pairs changed 45\n", + "iter: 1 i:462, pairs changed 45\n", + "iter: 1 i:463, pairs changed 46\n", + "iter: 1 i:464, pairs changed 46\n", + "iter: 1 i:465, pairs changed 47\n", + "iter: 1 i:473, pairs changed 47\n", + "iter: 1 i:474, pairs changed 48\n", + "iter: 1 i:489, pairs changed 48\n", + "iter: 1 i:490, pairs changed 49\n", + "iter: 1 i:519, pairs changed 49\n", + "iter: 1 i:520, pairs changed 50\n", + "iter: 1 i:524, pairs changed 50\n", + "iter: 1 i:525, pairs changed 51\n", + "iter: 1 i:526, pairs changed 51\n", + "iter: 1 i:527, pairs changed 51\n", + "iter: 1 i:528, pairs changed 52\n", + "iter: 1 i:529, pairs changed 53\n", + "iter: 1 i:542, pairs changed 53\n", + "iter: 1 i:543, pairs changed 54\n", + "iter: 1 i:577, pairs changed 54\n", + "iter: 1 i:578, pairs changed 55\n", + "iter: 1 i:582, pairs changed 55\n", + "iter: 1 i:583, pairs changed 56\n", + "iter: 1 i:596, pairs changed 56\n", + "iter: 1 i:597, pairs changed 57\n", + "iter: 1 i:603, pairs changed 57\n", + "iter: 1 i:604, pairs changed 58\n", + "iter: 1 i:612, pairs changed 58\n", + "iter: 1 i:613, pairs changed 59\n", + "iter: 1 i:633, pairs changed 59\n", + "iter: 1 i:634, pairs changed 60\n", + "iter: 1 i:639, pairs changed 60\n", + "iter: 1 i:640, pairs changed 61\n", + "iter: 1 i:656, pairs changed 61\n", + "iter: 1 i:657, pairs changed 62\n", + "iter: 1 i:662, pairs changed 62\n", + "iter: 1 i:663, pairs changed 63\n", + "iter: 1 i:666, pairs changed 63\n", + "iter: 1 i:667, pairs changed 63\n", + "iter: 1 i:668, pairs changed 63\n", + "iter: 1 i:669, pairs changed 63\n", + "iter: 1 i:670, pairs changed 64\n", + "iter: 1 i:671, pairs changed 65\n", + "iter: 1 i:672, pairs changed 66\n", + "iter: 1 i:673, pairs changed 67\n", + "iter: 1 i:689, pairs changed 67\n", + "iter: 1 i:690, pairs changed 68\n", + "iter: 1 i:702, pairs changed 68\n", + "iter: 1 i:703, pairs changed 69\n", + "iter: 1 i:709, pairs changed 69\n", + "iter: 1 i:710, pairs changed 70\n", + "iter: 1 i:712, pairs changed 70\n", + "iter: 1 i:713, pairs changed 71\n", + "iter: 1 i:733, pairs changed 71\n", + "iter: 1 i:734, pairs changed 72\n", + "iter: 1 i:743, pairs changed 72\n", + "iter: 1 i:744, pairs changed 73\n", + "iter: 1 i:745, pairs changed 73\n", + "iter: 1 i:746, pairs changed 74\n", + "iter: 1 i:776, pairs changed 74\n", + "iter: 1 i:777, pairs changed 75\n", + "iter: 1 i:781, pairs changed 75\n", + "iter: 1 i:782, pairs changed 76\n", + "iter: 1 i:787, pairs changed 76\n", + "iter: 1 i:788, pairs changed 77\n", + "iter: 1 i:790, pairs changed 77\n", + "iter: 1 i:791, pairs changed 78\n", + "iter: 1 i:818, pairs changed 78\n", + "iter: 1 i:819, pairs changed 79\n", + "iter: 1 i:825, pairs changed 79\n", + "iter: 1 i:826, pairs changed 80\n", + "iter: 1 i:849, pairs changed 80\n", + "iter: 1 i:850, pairs changed 81\n", + "iter: 1 i:859, pairs changed 81\n", + "iter: 1 i:860, pairs changed 81\n", + "iter: 1 i:861, pairs changed 82\n", + "iter: 1 i:862, pairs changed 83\n", + "iter: 1 i:869, pairs changed 83\n", + "iter: 1 i:870, pairs changed 84\n", + "iter: 1 i:872, pairs changed 84\n", + "iter: 1 i:873, pairs changed 85\n", + "iter: 1 i:889, pairs changed 85\n", + "iter: 1 i:890, pairs changed 86\n", + "iter: 1 i:903, pairs changed 86\n", + "iter: 1 i:904, pairs changed 87\n", + "iter: 1 i:927, pairs changed 87\n", + "iter: 1 i:928, pairs changed 88\n", + "iter: 1 i:943, pairs changed 88\n", + "iter: 1 i:944, pairs changed 89\n", + "iter: 1 i:949, pairs changed 89\n", + "iter: 1 i:950, pairs changed 90\n", + "iter: 1 i:952, pairs changed 90\n", + "iter: 1 i:953, pairs changed 91\n", + "iter: 1 i:957, pairs changed 91\n", + "iter: 1 i:958, pairs changed 92\n", + "iter: 1 i:965, pairs changed 92\n", + "iter: 1 i:966, pairs changed 93\n", + "iter: 1 i:979, pairs changed 93\n", + "iter: 1 i:980, pairs changed 94\n", + "iter: 1 i:984, pairs changed 94\n", + "iter: 1 i:985, pairs changed 95\n", + "iter: 1 i:997, pairs changed 95\n", + "iter: 1 i:998, pairs changed 96\n", + "iter:1:100\n", + "iter: 2 i:1, pairs changed 0\n", + "iter: 2 i:2, pairs changed 1\n", + "iter: 2 i:21, pairs changed 1\n", + "iter: 2 i:34, pairs changed 1\n", + "iter: 2 i:37, pairs changed 1\n", + "iter: 2 i:51, pairs changed 1\n", + "iter: 2 i:56, pairs changed 1\n", + "iter: 2 i:63, pairs changed 1\n", + "iter: 2 i:68, pairs changed 1\n", + "iter: 2 i:69, pairs changed 1\n", + "iter: 2 i:75, pairs changed 1\n", + "iter: 2 i:81, pairs changed 1\n", + "iter: 2 i:88, pairs changed 1\n", + "iter: 2 i:95, pairs changed 1\n", + "iter: 2 i:108, pairs changed 1\n", + "iter: 2 i:114, pairs changed 1\n", + "iter: 2 i:118, pairs changed 1\n", + "iter: 2 i:119, pairs changed 1\n", + "iter: 2 i:121, pairs changed 1\n", + "iter: 2 i:156, pairs changed 1\n", + "iter: 2 i:169, pairs changed 1\n", + "iter: 2 i:192, pairs changed 1\n", + "iter: 2 i:206, pairs changed 1\n", + "iter: 2 i:209, pairs changed 1\n", + "iter: 2 i:210, pairs changed 1\n", + "iter: 2 i:216, pairs changed 1\n", + "iter: 2 i:229, pairs changed 1\n", + "iter: 2 i:232, pairs changed 1\n", + "iter: 2 i:234, pairs changed 1\n", + "iter: 2 i:246, pairs changed 1\n", + "iter: 2 i:249, pairs changed 1\n", + "iter: 2 i:260, pairs changed 1\n", + "iter: 2 i:283, pairs changed 1\n", + "iter: 2 i:293, pairs changed 1\n", + "iter: 2 i:296, pairs changed 1\n", + "iter: 2 i:303, pairs changed 1\n", + "iter: 2 i:320, pairs changed 1\n", + "iter: 2 i:326, pairs changed 1\n", + "iter: 2 i:359, pairs changed 1\n", + "iter: 2 i:399, pairs changed 1\n", + "iter: 2 i:427, pairs changed 1\n", + "iter: 2 i:429, pairs changed 1\n", + "iter: 2 i:435, pairs changed 1\n", + "iter: 2 i:440, pairs changed 1\n", + "iter: 2 i:451, pairs changed 1\n", + "iter: 2 i:453, pairs changed 1\n", + "iter: 2 i:458, pairs changed 1\n", + "iter: 2 i:462, pairs changed 1\n", + "iter: 2 i:464, pairs changed 1\n", + "iter: 2 i:473, pairs changed 1\n", + "iter: 2 i:489, pairs changed 1\n", + "iter: 2 i:519, pairs changed 1\n", + "iter: 2 i:524, pairs changed 1\n", + "iter: 2 i:526, pairs changed 1\n", + "iter: 2 i:527, pairs changed 1\n", + "iter: 2 i:542, pairs changed 1\n", + "iter: 2 i:577, pairs changed 1\n", + "iter: 2 i:582, pairs changed 1\n", + "iter: 2 i:596, pairs changed 1\n", + "iter: 2 i:603, pairs changed 1\n", + "iter: 2 i:612, pairs changed 1\n", + "iter: 2 i:633, pairs changed 1\n", + "iter: 2 i:639, pairs changed 1\n", + "iter: 2 i:656, pairs changed 1\n", + "iter: 2 i:662, pairs changed 1\n", + "iter: 2 i:666, pairs changed 1\n", + "iter: 2 i:667, pairs changed 1\n", + "iter: 2 i:668, pairs changed 1\n", + "iter: 2 i:669, pairs changed 1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iter: 2 i:689, pairs changed 1\n", + "iter: 2 i:702, pairs changed 1\n", + "iter: 2 i:709, pairs changed 1\n", + "iter: 2 i:712, pairs changed 1\n", + "iter: 2 i:733, pairs changed 1\n", + "iter: 2 i:743, pairs changed 1\n", + "iter: 2 i:745, pairs changed 1\n", + "iter: 2 i:776, pairs changed 1\n", + "iter: 2 i:781, pairs changed 1\n", + "iter: 2 i:787, pairs changed 1\n", + "iter: 2 i:790, pairs changed 1\n", + "iter: 2 i:818, pairs changed 1\n", + "iter: 2 i:825, pairs changed 1\n", + "iter: 2 i:849, pairs changed 1\n", + "iter: 2 i:859, pairs changed 1\n", + "iter: 2 i:860, pairs changed 1\n", + "iter: 2 i:869, pairs changed 1\n", + "iter: 2 i:872, pairs changed 1\n", + "iter: 2 i:889, pairs changed 1\n", + "iter: 2 i:903, pairs changed 1\n", + "iter: 2 i:927, pairs changed 1\n", + "iter: 2 i:943, pairs changed 1\n", + "iter: 2 i:949, pairs changed 1\n", + "iter: 2 i:952, pairs changed 1\n", + "iter: 2 i:957, pairs changed 1\n", + "iter: 2 i:965, pairs changed 1\n", + "iter: 2 i:979, pairs changed 1\n", + "iter: 2 i:984, pairs changed 1\n", + "iter: 2 i:997, pairs changed 1\n", + "iter:2:100\n", + "iter: 3 i:1, pairs changed 0\n", + "iter: 3 i:21, pairs changed 0\n", + "iter: 3 i:34, pairs changed 0\n", + "iter: 3 i:37, pairs changed 0\n", + "iter: 3 i:51, pairs changed 0\n", + "iter: 3 i:56, pairs changed 0\n", + "iter: 3 i:63, pairs changed 0\n", + "iter: 3 i:68, pairs changed 0\n", + "iter: 3 i:69, pairs changed 0\n", + "iter: 3 i:75, pairs changed 0\n", + "iter: 3 i:81, pairs changed 0\n", + "iter: 3 i:88, pairs changed 0\n", + "iter: 3 i:95, pairs changed 0\n", + "iter: 3 i:108, pairs changed 0\n", + "iter: 3 i:114, pairs changed 0\n", + "iter: 3 i:118, pairs changed 0\n", + "iter: 3 i:119, pairs changed 0\n", + "iter: 3 i:121, pairs changed 0\n", + "iter: 3 i:156, pairs changed 0\n", + "iter: 3 i:169, pairs changed 0\n", + "iter: 3 i:192, pairs changed 0\n", + "iter: 3 i:206, pairs changed 0\n", + "iter: 3 i:209, pairs changed 0\n", + "iter: 3 i:210, pairs changed 0\n", + "iter: 3 i:216, pairs changed 0\n", + "iter: 3 i:229, pairs changed 0\n", + "iter: 3 i:232, pairs changed 0\n", + "iter: 3 i:234, pairs changed 0\n", + "iter: 3 i:246, pairs changed 0\n", + "iter: 3 i:249, pairs changed 0\n", + "iter: 3 i:260, pairs changed 0\n", + "iter: 3 i:283, pairs changed 0\n", + "iter: 3 i:293, pairs changed 0\n", + "iter: 3 i:296, pairs changed 0\n", + "iter: 3 i:303, pairs changed 0\n", + "iter: 3 i:320, pairs changed 0\n", + "iter: 3 i:326, pairs changed 0\n", + "iter: 3 i:359, pairs changed 0\n", + "iter: 3 i:399, pairs changed 0\n", + "iter: 3 i:427, pairs changed 0\n", + "iter: 3 i:429, pairs changed 0\n", + "iter: 3 i:435, pairs changed 0\n", + "iter: 3 i:440, pairs changed 0\n", + "iter: 3 i:451, pairs changed 0\n", + "iter: 3 i:453, pairs changed 0\n", + "iter: 3 i:458, pairs changed 0\n", + "iter: 3 i:462, pairs changed 0\n", + "iter: 3 i:464, pairs changed 0\n", + "iter: 3 i:473, pairs changed 0\n", + "iter: 3 i:489, pairs changed 0\n", + "iter: 3 i:519, pairs changed 0\n", + "iter: 3 i:524, pairs changed 0\n", + "iter: 3 i:526, pairs changed 0\n", + "iter: 3 i:527, pairs changed 0\n", + "iter: 3 i:542, pairs changed 0\n", + "iter: 3 i:577, pairs changed 0\n", + "iter: 3 i:582, pairs changed 0\n", + "iter: 3 i:596, pairs changed 0\n", + "iter: 3 i:603, pairs changed 0\n", + "iter: 3 i:612, pairs changed 0\n", + "iter: 3 i:633, pairs changed 0\n", + "iter: 3 i:639, pairs changed 0\n", + "iter: 3 i:656, pairs changed 0\n", + "iter: 3 i:662, pairs changed 0\n", + "iter: 3 i:666, pairs changed 0\n", + "iter: 3 i:667, pairs changed 0\n", + "iter: 3 i:668, pairs changed 0\n", + "iter: 3 i:669, pairs changed 0\n", + "iter: 3 i:689, pairs changed 0\n", + "iter: 3 i:702, pairs changed 0\n", + "iter: 3 i:709, pairs changed 0\n", + "iter: 3 i:712, pairs changed 0\n", + "iter: 3 i:733, pairs changed 0\n", + "iter: 3 i:743, pairs changed 0\n", + "iter: 3 i:745, pairs changed 0\n", + "iter: 3 i:776, pairs changed 0\n", + "iter: 3 i:781, pairs changed 0\n", + "iter: 3 i:787, pairs changed 0\n", + "iter: 3 i:790, pairs changed 0\n", + "iter: 3 i:818, pairs changed 0\n", + "iter: 3 i:825, pairs changed 0\n", + "iter: 3 i:849, pairs changed 0\n", + "iter: 3 i:859, pairs changed 0\n", + "iter: 3 i:860, pairs changed 0\n", + "iter: 3 i:869, pairs changed 0\n", + "iter: 3 i:872, pairs changed 0\n", + "iter: 3 i:889, pairs changed 0\n", + "iter: 3 i:903, pairs changed 0\n", + "iter: 3 i:927, pairs changed 0\n", + "iter: 3 i:943, pairs changed 0\n", + "iter: 3 i:949, pairs changed 0\n", + "iter: 3 i:952, pairs changed 0\n", + "iter: 3 i:957, pairs changed 0\n", + "iter: 3 i:965, pairs changed 0\n", + "iter: 3 i:979, pairs changed 0\n", + "iter: 3 i:984, pairs changed 0\n", + "iter: 3 i:997, pairs changed 0\n" + ] + } + ], + "source": [ + "svm.train()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9817\n" + ] + } + ], + "source": [ + "errorCnt = 0\n", + "for i in range(len(testData[:200])):\n", + " if testLabel[i] != svm.predict(testData[i]):\n", + " errorCnt += 1\n", + "accuracy = 1 - errorCnt / len(testData)\n", + "print(accuracy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "oldHeight": 208.4, + "position": { + "height": "230px", + "left": "1166px", + "right": "20px", + "top": "120px", + "width": "354px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "varInspector_section_display": "block", + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/.ipynb_checkpoints/07-AdaBoost-checkpoint.ipynb b/.ipynb_checkpoints/07-AdaBoost-checkpoint.ipynb new file mode 100644 index 0000000..2fd6442 --- /dev/null +++ b/.ipynb_checkpoints/07-AdaBoost-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/00-minst.ipynb b/00-minst.ipynb new file mode 100644 index 0000000..ad34e17 --- /dev/null +++ b/00-minst.ipynb @@ -0,0 +1,232 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "def loadData(fileName):\n", + " '''\n", + " 加载文件\n", + " :param fileName:要加载的文件路径\n", + " :return: 数据集和标签集\n", + " '''\n", + " print('start read file')\n", + " #存放数据及标记\n", + " dataArr = []; labelArr = []\n", + " #读取文件\n", + " fr = open(fileName)\n", + " #遍历文件中的每一行\n", + " for line in fr.readlines(): #获取当前行,并按“,”切割成字段放入列表中\n", + "\n", + " curLine = line.strip().split(',') #strip:去掉每行字符串首尾指定的字符(默认空格或换行符) split:按照指定的字符将字符串切割成每个字段,返回列表形式\n", + " \n", + " dataArr.append([int(num) for num in curLine[1:]]) #将每行中除标记外的数据放入数据集中(curLine[0]为标记信息) #在放入的同时将原先字符串形式的数据转换为整型\n", + "\n", + " labelArr.append(int(curLine[0])) #将标记信息放入标记集中 放入的同时将标记转换为整型\n", + "\n", + " return dataArr, labelArr" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n" + ] + } + ], + "source": [ + "dataArr, labelArr=loadData('D:/Jupyter/mnist_train.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(60000, 784)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "a=np.array(dataArr)\n", + "a.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAADu1JREFUeJzt3X+QVfV5x/HPw3bll+BIDUgIlqishNIG4gZjTYKJowNJpuhMNWE6hlLTzUyixWjbOExn4qTTDs2YGJNgEhKJmERMZvzFdKjRUKbGhBAWNMGIRksW3UAhAi34C1n26R97SDe453sv9557z2Wf92uG2XvPc849z1z97Ll3v+ecr7m7AMQzouwGAJSD8ANBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCOoPmrmzU2ykj9LYZu4SCOU1vazX/bBVs25d4Tez+ZJuk9Qm6Zvuvjy1/iiN1QV2ST27BJCwyddXvW7NH/vNrE3SCkkLJM2UtMjMZtb6egCaq57v/HMlPefuO9z9dUn3SFpYTFsAGq2e8E+R9MKg573Zst9jZl1m1m1m3Ud0uI7dAShSPeEf6o8Kb7g+2N1Xununu3e2a2QduwNQpHrC3ytp6qDnb5G0q752ADRLPeHfLGm6mb3VzE6R9BFJa4tpC0Cj1TzU5+59ZnatpB9oYKhvlbv/srDOADRUXeP87r5O0rqCegHQRJzeCwRF+IGgCD8QFOEHgiL8QFCEHwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ERfiBoAg/EBThB4Ii/EBQTZ2iG8NP3/vPT9Z3fyJ/irafX7g6ue3bNy5O1t+84pRkvW3D1mQ9Oo78QFCEHwiK8ANBEX4gKMIPBEX4gaAIPxBUXeP8ZtYj6ZCko5L63L2ziKbQOvrnzUnWv7TqK8n6ue35/4v1V9j34xd+K1l/pvNosv73095VYQ+xFXGSz/vc/cUCXgdAE/GxHwiq3vC7pIfNbIuZdRXREIDmqPdj/0XuvsvMJkp6xMyedvdHB6+Q/VLokqRRGlPn7gAUpa4jv7vvyn7ulXS/pLlDrLPS3TvdvbNdI+vZHYAC1Rx+MxtrZuOOPZZ0maQni2oMQGPV87F/kqT7zezY69zt7g8V0hWAhqs5/O6+Q9LbC+wFJThyWfrUjH+4/dvJekd7+pr6/sRo/o4jR5Lb/m9/+mvinArfIg8veGdubfSGbclt+197Lf3iwwBDfUBQhB8IivADQRF+ICjCDwRF+IGguHX3MNA2fnxu7eX3zkhu+6lb707W3zf6pQp7r/34ceeBP0vW199+YbL+45u/lKw/8s2v5dZmfufa5LZnf3pjsj4ccOQHgiL8QFCEHwiK8ANBEX4gKMIPBEX4gaAY5x8Geu+aklvb/M4VTezkxHx24uZk/aFT0+cBLOm5LFlfPe2HubXxM/clt42AIz8QFOEHgiL8QFCEHwiK8ANBEX4gKMIPBMU4/0mg7/3nJ+trZudPkz1C6VtrV7Jk5yXJevcP35asb7smv7cNr45Kbjux+9Vk/bkD6XsVtP/LhtzaCEtuGgJHfiAowg8ERfiBoAg/EBThB4Ii/EBQhB8Iytw9vYLZKkkfkrTX3WdlyyZI+p6kaZJ6JF3l7gcq7Wy8TfALLD1uHFH/vDnJ+hdX356sn9te++kaf/70Fcl621+8nKzv/+B5yfq+WfkD6h0rXkhu2/dCb7Jeyb/9ZktubffR9DkEf734b5P1tg1ba+qp0Tb5eh30/VWdxVDNkf9OSfOPW3aTpPXuPl3S+uw5gJNIxfC7+6OS9h+3eKGk1dnj1ZIuL7gvAA1W63f+Se6+W5KynxOLawlAMzT83H4z65LUJUmjNKbRuwNQpVqP/HvMbLIkZT/35q3o7ivdvdPdO9s1ssbdAShareFfK2lx9nixpAeLaQdAs1QMv5mtkbRR0nlm1mtm10haLulSM3tW0qXZcwAnkYrf+d19UU6JAfsq2fl/nKy/eEN6zLmjPX1N/pbD+bX/eGlmctt990xN1v/wQHqe+tO+89N0PVHrS27ZWJPa0l9B913/SrI+Mf9WAScNzvADgiL8QFCEHwiK8ANBEX4gKMIPBMWtuwswYkz6tOW+zx1M1n86475k/dd9ryfrNyy7Mbd2+o+eT247cWzuyZmSpKPJ6vA1d/LOZL2nOW00FEd+ICjCDwRF+IGgCD8QFOEHgiL8QFCEHwiKcf4CvDovfcnuD2akb71dyceWfipZH/dA/mW1ZV42i9bGkR8IivADQRF+ICjCDwRF+IGgCD8QFOEHgmKcvwB/+k9PJOsjKvyOXbIzfRf00Q/87IR7gtRubbm1I+mZ6dVmFVYYBjjyA0ERfiAowg8ERfiBoAg/EBThB4Ii/EBQFcf5zWyVpA9J2uvus7JlN0v6G0m/zVZb5u7rGtVkK/ifqy/Mrf3jpFuS2/arwhTbD6en0T5LP0nWMbQjnj/rQL/6k9s+tD3932S6ttbUUyup5sh/p6T5Qyy/1d1nZ/+GdfCB4ahi+N39UUn7m9ALgCaq5zv/tWb2CzNbZWanF9YRgKaoNfxflXSOpNmSdkv6fN6KZtZlZt1m1n1Eh2vcHYCi1RR+d9/j7kfdvV/SNyTNTay70t073b2zXSNr7RNAwWoKv5lNHvT0CklPFtMOgGapZqhvjaSLJZ1hZr2SPiPpYjObLck1MFvxxxvYI4AGqBh+d180xOI7GtBLS+sbnV87bUR6HH/ja+mvO2fftSu972R1+BoxZkyy/vQtsyq8wpbcyl/uWJDccsbSXyfr+WcQnDw4ww8IivADQRF+ICjCDwRF+IGgCD8QFLfuboJ9R09N1vt29DSnkRZTaSjvmeV/kqw/vfAryfq/v3Jabm3XinOT2447kD/t+XDBkR8IivADQRF+ICjCDwRF+IGgCD8QFOEHgmKcvwn+7sdXJusdiUtPT3b98+bk1vbe8Gpy2+2d6XH8S7Z9OFkfO39Hbm2chv84fiUc+YGgCD8QFOEHgiL8QFCEHwiK8ANBEX4gKMb5q2X5pREVfofe9u41yfoKddTSUUvY+dn8qcsl6d6PfiG31tGevuX5O362OFl/8xVPJetI48gPBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0FVHOc3s6mS7pJ0pqR+SSvd/TYzmyDpe5KmSeqRdJW7H2hcqyXz/FK/+pObzhu9L1m//s7zk/VzvpV+/fb/PpRb2zPvTcltJ3y4N1m/7qz1yfqCMel7Eax9eVJu7aPb5ie3PePrY5N11KeaI3+fpBvd/W2S3iXpk2Y2U9JNkta7+3RJ67PnAE4SFcPv7rvdfWv2+JCk7ZKmSFooaXW22mpJlzeqSQDFO6Hv/GY2TdIcSZskTXL33dLALwhJE4tuDkDjVB1+MztV0r2Srnf3gyewXZeZdZtZ9xEdrqVHAA1QVfjNrF0Dwf+uu9+XLd5jZpOz+mRJe4fa1t1Xununu3e2a2QRPQMoQMXwm5lJukPSdncffInWWknHLrtaLOnB4tsD0CjVXNJ7kaSrJW0zsyeyZcskLZf0fTO7RtLzktL3pw5slKXf5u2Xfi1Zf+w9o5L1Zw+fmVtbclpPctt6Ld31nmT9oZ/Mzq1NX8rts8tUMfzu/pjyr2a/pNh2ADQLZ/gBQRF+ICjCDwRF+IGgCD8QFOEHgjL3xLWqBRtvE/wCOzlHB9s6zsmtdazZmdz2X8/cWNe+K90avNIlxSmPH06/9qL/7ErWO5YM3+nFT0abfL0O+v7Ejeb/H0d+ICjCDwRF+IGgCD8QFOEHgiL8QFCEHwiKKbqrdPRX/5Vbe/bKacltZ153XbL+1FVfrqWlqsxY94lk/bzbX0nWOx5nHH+44sgPBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0FxPT8wjHA9P4CKCD8QFOEHgiL8QFCEHwiK8ANBEX4gqIrhN7OpZrbBzLab2S/NbGm2/GYz+42ZPZH9+0Dj2wVQlGpu5tEn6UZ332pm4yRtMbNHstqt7n5L49oD0CgVw+/uuyXtzh4fMrPtkqY0ujEAjXVC3/nNbJqkOZI2ZYuuNbNfmNkqMzs9Z5suM+s2s+4jOlxXswCKU3X4zexUSfdKut7dD0r6qqRzJM3WwCeDzw+1nbuvdPdOd+9s18gCWgZQhKrCb2btGgj+d939Pkly9z3uftTd+yV9Q9LcxrUJoGjV/LXfJN0habu7f2HQ8smDVrtC0pPFtwegUar5a/9Fkq6WtM3MnsiWLZO0yMxmS3JJPZI+3pAOATRENX/tf0zSUNcHryu+HQDNwhl+QFCEHwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ERfiBoJo6RbeZ/VbSzkGLzpD0YtMaODGt2lur9iXRW62K7O2P3P1N1azY1PC/Yedm3e7eWVoDCa3aW6v2JdFbrcrqjY/9QFCEHwiq7PCvLHn/Ka3aW6v2JdFbrUrprdTv/ADKU/aRH0BJSgm/mc03s2fM7Dkzu6mMHvKYWY+ZbctmHu4uuZdVZrbXzJ4ctGyCmT1iZs9mP4ecJq2k3lpi5ubEzNKlvnetNuN10z/2m1mbpF9JulRSr6TNkha5+1NNbSSHmfVI6nT30seEzey9kl6SdJe7z8qWfU7Sfndfnv3iPN3dP90ivd0s6aWyZ27OJpSZPHhmaUmXS/orlfjeJfq6SiW8b2Uc+edKes7dd7j765LukbSwhD5anrs/Kmn/cYsXSlqdPV6tgf95mi6nt5bg7rvdfWv2+JCkYzNLl/reJfoqRRnhnyLphUHPe9VaU367pIfNbIuZdZXdzBAmZdOmH5s+fWLJ/Ryv4szNzXTczNIt897VMuN10coI/1Cz/7TSkMNF7v4OSQskfTL7eIvqVDVzc7MMMbN0S6h1xuuilRH+XklTBz1/i6RdJfQxJHfflf3cK+l+td7sw3uOTZKa/dxbcj+/00ozNw81s7Ra4L1rpRmvywj/ZknTzeytZnaKpI9IWltCH29gZmOzP8TIzMZKukytN/vwWkmLs8eLJT1YYi+/p1Vmbs6bWVolv3etNuN1KSf5ZEMZX5TUJmmVu/9z05sYgpmdrYGjvTQwiendZfZmZmskXayBq772SPqMpAckfV/SWZKel3Sluzf9D285vV2sgY+uv5u5+dh37Cb39m5JP5K0TVJ/tniZBr5fl/beJfpapBLeN87wA4LiDD8gKMIPBEX4gaAIPxAU4QeCIvxAUIQfCIrwA0H9HxK6HmPNl2xnAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "number1=a[1,:]\n", + "b=np.reshape(number1,(28,28))\n", + "\n", + "plt.imshow(b)\n", + "plt.show" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAHIlJREFUeJzt3WmcVMXVx/HfiIKi4sJiTFxQRJYEBCGiBh8Ju0IggiBGRBaNAq6ASkjC7hbDpsiiICIY16jRxMQFRCNRUJSIG6AGFRUUQVREFJ3nBZ9Tt3q6Z+iZ6aW6+/99w03dOz3lze2pW1WnThUVFxcjIiISmj2yXQEREZFE1ECJiEiQ1ECJiEiQ1ECJiEiQ1ECJiEiQ1ECJiEiQ1ECJiEiQ1ECJiEiQ1ECJiEiQ9izPxbVq1SquW7dumqqSO9atW8emTZuKKvs5up+76H6m3ooVKzYVFxfXrsxn6H5GUnE/QffUJPudL1cDVbduXV566aWK1ypPtGzZMiWfo/u5i+5n6hUVFb1X2c/Q/Yyk4n6C7qlJ9juvIT4REQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQlSuRbqhuaDDz4AYNq0aa5sypQpAFxxxRUAXHbZZe7c4YcfnsHaiYhIZagHJSIiQcq5HtSHH37ojps3bw7A559/7sqKinald5o6dSoA8+fPd+c+/fTTTFQxL912220AXHTRRa7shx9+AGD16tWu7Nhjj81sxQK2Y8cOAL777jtX9txzzwHRc3zeeee5c3vumXNfx5TYtGmTO965cycAy5cvB6B79+7u3B57lO99esCAAQDMnj3blVWpUqXC9RR48803AWjfvr0rW7lyJQC1a1c6VWEc9aBERCRIOfPK9t57u3I1tmnTxpVt2bIFiHpNAAcccAAA1apVA+CTTz5x5959910AjjzySFemN6qyLVq0CIBhw4YBid9i/ftfqKwXP2nSJFe2ePFiAJYtW1bqz/kjAqNHj05T7cKyYcMGAO68804Abr31VnfOeuXvv/8+EPu8lfc5u+OOOwA46KCDXNnEiROB6O9DqNauXQtEf+NOOOGEbFbHsWe5Xbt2Gfl96kGJiEiQ1ECJiEiQghzi8yeVbWivc+fOQBRaXppmzZoBcM011wDQunVrd65+/fpA7JDCoEGDUlDj/LVmzRoAvvnmmyzXJBx+sI0tcbB/t2/f7s4VFxcDcNRRR7mymjVrArBixQogdgJ/8ODBQHomm0MycuRIABYuXJiR32dLTyAK8qlXr15GfndF2dD6W2+9BWR3iM+eY4iGHu3vQrqpByUiIkEKsgd15ZVXuuPp06eX62efeeYZALZt2wbAGWec4c49+OCDALzyyiuVrWJee+ONN9zx2LFjY84df/zx7viJJ54AYN99981IvbLFeo82wT5z5kx3buvWraX+XJMmTYDomYQojPqQQw4BYOPGjXGfle89qF/96ldA4h7Uj3/8YwBGjBgBREETkDhA59///jcADz30UMrrmU033XQTAB07dsxyTeCrr75yx9dddx0QmwAhnc+relAiIhIkNVAiIhKkoIb4LADC7/r7E3QQO2TXs2dPAPr27evKLN9eo0aNALj66qvduQceeCDhZ8oub7/9NgCnn366K9u8eXPMNddff707tjVn+W7p0qVA7H97aRo3buyOn332WQBq1Kjhyj777LMU1y732He45LMF0TDefvvtl9RnXXjhhUD0fbf1U76BAwe6Y38NZMi+//77bFfB8bPHGLvf6aYelIiIBCmIHpStpi8rt94555wDRDnhIJrM98v69OkDQPXq1YFo0hWit7MFCxa4Mgt5VaZzmDNnDpA4lL9Hjx4A/PKXv8xonUJgGQkSsdyDbdu2BaLlDRDbczK2bKKQ2fcw0f0pr5dffhmIzedX0hFHHOGOQ853+NFHH7ljP8NItiXq6Xbo0CEjv1s9KBERCVLWXif8N54bbrgBiPJOWQguRIscbRFj1apV3TlblGv/Juvrr792xzfeeCMQhXUWmkT3wg/ntYWlEyZMyGzFAjJjxgwATjrpJCBaNA7Rs5psqL2fG1IqxjLCQ7RA2n+OS/KXrYTMlm1A2f89mWJLdVatWhV3zv4upJt6UCIiEiQ1UCIiEqSMD/HZSnpbKQ5RWLmFLT/++OPu3DHHHAPE5udLpf/9739p+dzQWSCKvyFcIpZJomHDhumuUrD2339/AIYMGVLpz7ItOCQ5FqoPMHz4cABef/11V/btt9+W+rOnnHIKUP6NDrPltddeiysr7/RFKv3+978HYoM3mjZtCsROtaRTbvw/JyIiBSfjPShbSJcoD9cLL7wAJN42fJ999klvxQqM5TD7z3/+E3euV69e7rh///6ZqlJOs0XgX3zxhSuzBeH+RnuWxdx06dLFHR999NHprGIwrPd+3333AfDYY4+Veu2jjz7qjsvasPDAAw8Eok0QIdrJYK+99qp4ZbOsVatWaf38HTt2ALHPpe32cO+998Zdb8Fke++9d1rrZdSDEhGRIGW8BzV06FAgNt2QpT5J1HNKJcuM7I9JF1raoxdffBGA8847L+6cZZn2Fz5n6k0pF9g8qD8mb9u0JxoRSPS8GVsYPm/ePFeWK3MlFfHxxx+74zZt2gDwzjvvpOzz7dn103TlAz9pQVnsmbRnzs+gb/PsNl938803u3OWUslfJmEZ1O2778//ZyrFkcnfb4SIiOQ0NVAiIhKkjAzx+RsEWtioP+HpT8qnkw2h+L+7ZcuWGfnd2eQPE5x44omlXmch/fm+AWEy/GzS69evB6KhKT9XoeV8tCG70047zZ27++67gdgN34wtt/jHP/7hyn7zm98AUKVKlUrXP2Q2rJ7M8PruNiw0Fhzhb6SXzRDtirBnCaK/Ud26dQOgQYMGZf7s888/D0T31M85aJnhLeDCX+Jjofj+vbLvvz3TllECMr+ZpnpQIiISpIz0oGzLbIjCGv0s436obarYG2qiHHtnnnmmOx41alTKf3doJk2a5I7Legv1984qVNZzWrlypSsrGeprufkA2rVrB0C9evUA2L59uzv36quvArBs2bK437NhwwYABgwY4MoszNz/fSFn3y6PQw891B1boM79998PxG5rnswC0Llz57rjMWPGpKqKWTd+/Hh3bM/TkiVLkvrZ+vXrA1Ev3EZDIMpnmiwL+7dnNJuL9NWDEhGRIKmBEhGRIGVt/MBfX5Ps9s7JsKG9mTNnAnDVVVe5c3Xr1gWiHFOQuZxS2WCbnlmWg0T8IaZMT4CGwg+IsO0b/OfG2PBJv379XJk9x7Y9QteuXd05y4xSrVo1V2ZbmtgQor8O6tRTTwWgd+/erszWWSX6jhx22GG7+S8Lk+XcPP/88yv085aTD/JriM9n6xQTrVdMt7///e8x/3vgwIEZr4NRD0pERIKUtR7Uueeem7LP8rdHts0PbSLb7yH4GRIKgYXQJ9oOu1OnTgBMnz49o3UKiYUwT5061ZVZoIhlMIdoy3e7Z37v37Zwv+CCC4DY7NtNmjQB4J577nFlNuFswUKXXHKJO3f77bcDMH/+fFdm+eqMn69vzZo1u/tPzEu2zbtkRo8ePbL2u9WDEhGRIGWkB+UvyLNjeysF+OMf/1ihz7WFkP5bqG0bf+mllwIwZcqUCn12PrDtxROFlltPIZ/n4HbHxtr98Hqb6/GzaLdo0QKA1atXAzBr1ix3znLwWXi53yO1OasaNWrE/W6bl7L9dSDqyfXs2dOVlez158Lz7M/p2XbhP/3pT11ZRbOLP/nkk0DmFvZL9qkHJSIiQVIDJSIiQcrIEJ+f+86OLb8ZRCuoBw0aBMROUNv2zrNnzwaijfYA1q1bB0SrrgH69OkDREN8hchybfl5zEryh5YKVaIt3G2Zgr8UYevWrUDiLbmNLWuwZxgqvn2G5UcreRy6tWvXAjB27FhXZpvebd682ZUlM8RnQ6bLly93ZfbdTpTb0PLYaXuY1LHpGAsEgsxvqqkelIiIBClrYeb+RKr1oCzH1sEHH+zO2SRrIpY5unPnzq7s4osvTmk9c4Ufam8Lc+0N3l8oagsblbE8WrhtOccgyhu5dOnSuOv79u0LQIcOHVyZPYO25Xg+bzq4O/379wcS5x70gzsSBY2UZEEq/sZ7ibZ8txBoW7ybzbxx+cbud1kjMelWuN8mEREJmhooEREJUkaG+Pw1EO3btwfgqaeeirvOAif84SpTp04dAAYPHuzKKrp+Kh/5E8cl758NZYG21PAtWrQIiDZ7g2hoz98e4qyzzgKiCfh831AwHSZMmFDpz7AtevwsNOPGjQPyZ1uSEC1evNgd2/YymaIelIiIBCkjrx3+pKhN4NsWzVB2SPjEiROBKNdZzZo101FFKUAWPGJbuZc8lvKxkHJ/k9DJkyeX6zMaN24MRH8z/M0M7W+A37uV9PEzAGWLelAiIhKkjA/cWq4zf5FkogWTUj4/+clP3HGXLl2A2HxyIulm+1Nde+21ruz//u//gNi9nyy7vu0z1K1bN3fOerCp3CNOysdyQfo5J7NFPSgREQmSGigREQmSYjPzhD8k8vDDD2exJlLo/JDvrl27ArHZOiRsFkqezQwSRj0oEREJkhooEREJkhooEREJkhooEREJkhooEREJkhooEREJUlF58i0VFRV9Cry32wvz35HFxcW1K/shup+O7mfqVfqe6n7G0DOaWkndz3I1UCIiIpmiIT4REQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQmSGigREQnSnuW5uFatWsV169ZNU1Vyx7p169i0aVNRZT9H93MX3c/UW7Fixabi4uLalfkM3c9IKu4n6J6aZL/z5Wqg6taty0svvVTxWuWJli1bpuRzdD930f1MvaKiovcq+xm6n5FU3E/QPTXJfuc1xCciIkFSAyUiIkEq1xCfFIZNmza541/84hcA7Ny5E4B33nknK3USkcKjHpSIiARJPShxxo0bB8CsWbNc2aeffgpAv379slInESlc6kGJiEiQ1ECJiEiQNMRXoLZt2wZAr169XNnjjz8OQFFRtH6uVatWANxyyy0ZrJ2IiHpQIiISqOB7UD/88AMAO3bsKPWa+fPnu2PrGbzxxhsATJ061Z0bNWoUANOnT3dl++yzDwCTJk0CYPDgwamodrAshHzEiBEAPPHEE3HXzJs3zx3//Oc/B6L7JBKyb7/91h137twZiF0a8d///heAAw88MLMVkwpRD0pERIKUtR7U1q1b3fH3338PRG83/lv9559/DsCtt95ars+3hIzDhw93ZXPnzgXggAMOcGWnnHIKAG3bti3X5+eqL774AoCFCxeWeo2fzLJhw4bprpJIUr788suYf3377rsvACtWrHBlS5YsAeC4445zZRoJyC3qQYmISJDUQImISJAyPsS3fv16AJo1a+bKtmzZkrLP32OPXW2uDef5XfpBgwYBUKdOHVe23377AVC7dqW3egmWn1vvtNNOA6C4uDjuumXLlgGp2/6i0P3lL38B4JtvvnFlq1atAuCmm26Ku7558+YABbcdw8cff+yO7b6sW7cu7jobvkuUD9KCnOz+QvSM169f35VZ0FUhsXt5xx13APCvf/3LnXvxxRfjrr/rrrsAOPzwwwF48skn3bn+/fsDsdMA6aQelIiIBCnjPaiaNWsCcMghh7iy8vSgOnbsGPdZDz74oCurVq0aAG3atKlMNfPK3Xff7Y7t7bNv375AbMj9/vvvn9mK5YE1a9YA0bIGW+wMMGfOHCBxb9VfDG1effVVAI4//nhX9vLLL6eusoFaunSpO/7Tn/5U6nV77703AJdddpkrs+++Hwxl7B4PHTrUlRVKkIR/T3v37g3Axo0bgdjnsUePHgB88MEHrsz+Nhj/esvNmamF++pBiYhIkNRAiYhIkDI+xGddbJuwA3jggQcAOOmkkwDo2bNn3M+1bt0agL/97W+urGrVqgBs2LDBlU2bNi21Fc5hFhDx7LPPurJjjz0WgMmTJwMa1ivNV1995Y7PPfdcIFqn57PhaVub4w+H2DDzM888k9TvtAl8f41gPpsxYwYAV111Vdy5YcOGAbFTAUOGDAGgevXqrsyG9izjiQ1jAfzoRz8Cok0385k9OxYQ0aVLF3fOnuVf//rXAEycONGdswASW4sKMHDgQADuueeeuN9z8sknp7DWu6celIiIBClrmSTsjQegadOmQNQj8t+obNJ0woQJMdf47E0J4Lrrrkt9ZXOMhSlbRg5/Qv78888HYK+99sp8xXKABTvY2ybAu+++m/TP+715W8Lg98Y+++wzALp27QokDqc+8cQTk69wDrP78vXXX7uyY445BoAxY8YA0T30bd682R1bb8Duu2WUAJg5cyYAe+4ZfMrRSnv66acB6NSpU9y5s846C4Dbb78diALJfM8995w7Ltlz8kPKzzjjjErXtTzUgxIRkSAF8WpRskU/6KCD4q6xBXyWOw8Sh+oWKn8x6KJFi0q9rlatWgDUqFEjqc+9//77gcS9iKuvvro8VcwJ48ePB8ruNVm4M8Cdd94JQIsWLYDEC7790Oabb74ZSNxzsvnB2267rZy1zk0W/mzPGERh9aNHjwbg+uuvd+dsRwObnwJYsGABEN13fw66e/fu6ah2MPzF3ldccQUQ/U20+wfR9zRRz8lcfvnlpZ6799573bE//5cJ6kGJiEiQ1ECJiEiQghjiK8nvbi5fvhyAhx56CIDXX3/dnfvZz36W2YoFzB/utHtmoaeWnxBih0hLsowT/mfZZPXbb78dd/3IkSOBaAsPyM2w9ddee80d+3nKSqpXrx4Ajz32WFxZst5///1Sz/Xr1w/I/DBKthx22GEAtGvXzpXZEJ9liDj77LPduXPOOQdInIvPQtYTLVHJN7NmzQKiYT2Ihu/69OkDwO9+9zt3rmRA1M6dO92xLZ1Yu3atK7OlEjaEmM3cnOpBiYhIkILsQfmh5LZRoU38+xOfFgrsL8SzMMhCC6Cw8GiIFjNbz8l/yy8ZHPHhhx+6Y7vH/iJqYz2jo48+2pXZ21evXr1cmU2o+ptChu6aa65xx35IuLFFjzZhn2yvyQJXrEcL8MgjjyT8bMj/Sf2SLPw70fbrlhvOD7m3N3v/u21LUjp06JC2eobAD4KyJTf+fbCek4WSJ2Lh+RZ2DlF4uu/CCy8E4IILLqhEjVNDPSgREQlSkD0o38EHHwxEWaI7d+7szk2dOjXmX4jeIGwsOtFCv3xiobeJwqJtP5dLL73UlVkGeNsj6oYbbnDn5s2bB8Sml7He0ZVXXgnELqps1KgRAJ988kkl/yuyy5/z/Oijj4DYcHHrUZb3WbL9oH7729/GnbOF6rb3TkU+P1/Y4txk+dm2LdVRsssmcpWfishP52SmTJkCwLZt24AofRxEoxrPP/88EDtnbL2wRIv5EyVFyDT1oEREJEhqoEREJEjBD/GZE044AYgNM7cwS38lumXitVBUG5qC3AyB3p233noLiJ34NBYGftFFF7kyGwIYMWIEAAsXLnTnLLDBH5L6wx/+AERDgv7vseu7desWV5ZLWrVq5Y6TzTxeGn+DwYsvvjjuvIX82v83hTqsB9EyCH9L8USbOxrLKj9//vz0VixAVapUcceWe9TP+2hTIWUFhx1xxBFAbFCKBaP4w/r+hpnZph6UiIgEKWd6UObQQw91xzZ57fcQ2rdvD0Shw6tXr3bn/JxS+WLlypWlnvPvi7GgB8t07nvhhReAKCccRMEXfpmxe5yPOfkqys/Sn+ht9q9//SsAp59+esbqFKrBgwcDMGfOHFdWVg+g0JaO+Pz8j5Z53A/Bt63YGzduDES9TYgWgFumd/+c9aDs/4vQqAclIiJBUgMlIiJByrkhPp91e21rbYgmEy3f1MMPP+zO2XBfgwYNMlTD9LMN8PzJ5QEDBsRc42eLsCATu97W6kA0jGcBERBtG5/o+kSBGYXK1qHYxD/E5kA0/hBgIfnyyy/dsQ2127Yi/tDdqaeeCkT36c9//rM7Z2vUCp1tIOgHSSTD8u35fxPtGW3YsGFqKpdi6kGJiEiQcq4H5b9FWcZjWyENsZl6IfaNNdFEf77w30LLmky2Nya7xraHhygD8vbt212ZZYy368ra9KwQ2Qp/uz9+r8nusb+q3zaMLDQrVqxwx5brzfgbNFrGcvtO+z2o4447Lp1VzHuWzy/RM2ojJaFRD0pERIIUfA/KwidvueUWIMoXB7B+/fpSf87momy8FvIzTNUyultWZ4jukfWI/MXNW7dujfl5mzuBaJ7JX7R34403Avm5yLmivvvuO3dsi0wTLWGwhbp+/sh8fAbLYvO+ifZpsl5VkyZNXJllkx86dGjc9eXde0ti+fc5V6gHJSIiQVIDJSIiQQpqiM+6948++qgrGz9+PABr1qxJ6jPatm0LRJvLtWjRIpVVDI7ldvNzutl9rF+/PpD8sFKiXHzNmjVLST3zgW1tMmzYMFc2e/bsmGv8oT4b1iq0YT3fP//5TwC2bNniymxT0ebNmwOxW0ksXrwYiDbX85dP+FlkpPxWrVqV7SqUm3pQIiISpKz1oCyrNkT5oGwjsldeeSWpz+jYsSMA48aNc2UWVl4ob622KeGSJUtcmeXIszD8RKwX4Pcw7Y02n8PxK8MCTEr2miDKgXbmmWdmtE6hK7mswT+2ntPy5cvdOcsVaeH4fp7H7t27p7eyeS7RpqahUw9KRESCpAZKRESClJEhPj8zweWXXw5EKeMh2nSvLLY9wejRo12ZTeBboEAh84MZ/A0cpfJsLd7kyZPjzjVt2hSAp59+OqN1yhUbN26MK6tTpw4QDYc+8sgjcddYcEVIm+flOtv0dXf5IkMSdu1ERKRgpaUHtW7dOgCuvfZaAJ566il37r333tvtz1evXt0dT5gwAYAhQ4YAULVq1VRVUyQp9gzOmDEj7tyYMWOA3NzqPhOsh+mzIBMLIa9du7Y7ZyMkuZj1IHQWpm/5NQHefPNNILane9RRR2W2YmVQD0pERIKUlh6UbWs9d+7cUq/xx5bPPvvsXZXZc1d1/IWi/lbHIpni77VTMn/hqFGj3PHJJ5+csTrlIgsN93NoWo7CDh06AFFoOUCfPn0yWLvCNHXqVHfcqVMnIDaX5/Tp04HYnJzZoh6UiIgESQ2UiIgEKS1DfMOHD4/5VyTXLFy40B3fddddQJTb8JJLLnHn/Al+iWdD9P369XNl/rFkXuvWrd1x7969AbjvvvtcmWXxmDZtGpDdwDT1oEREJEhBZTMXCUWXLl3c8ciRIwFYsGABoF6T5LZq1aq5YwteadCggSuzZRVjx44FshssoR6UiIgESQ2UiIgESUN8Igk0atTIHe/cuTOLNRFJHxvus4woJY+zTT0oEREJUpG/pfJuLy4q+hTYfTK9/HdkcXFxpWfKdT8d3c/Uq/Q91f2MoWc0tZK6n+VqoERERDJFQ3wiIhIkNVAiIhIkNVAiIhIkNVAiIhIkNVAiIhIkNVAiIhIkNVAiIhIkNVAiIhIkNVAiIhKk/we/c92hMZ4D8wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(nrows=2, ncols=5, sharex=True, sharey=True, )\n", + "\n", + "ax = ax.flatten()\n", + "for i in range(10):\n", + " img =a[labelArr.index(i),:].reshape(28, 28)\n", + " ax[i].imshow(img, cmap='Greys', interpolation='nearest')\n", + "\n", + "ax[0].set_xticks([])\n", + "ax[0].set_yticks([])\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEYCAYAAAC6MEqvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xd4VMXXwPHvJpAAoUTpREho0hQLTVFBjAICKgooiPSiUgXhVaqhCtIkFJEAIlIEDNIRkCogBCJFQGPoEGooARJSNtn3j/3dIUt6sjX3fJ6Hhy13l+O4u+fOzJm5BpPJhBBCCH1yc3QAQgghHEeSgBBC6JgkASGE0DFJAkIIoWOSBIQQQsckCQghhI5JEhBCCB2TJCCEEDomSUAIIXQsT1YOLlasmMnPz89GoWTPuXPniIyMNDg6jsxyxjYECA0NjTSZTMUdHUdmSTvmnLShdbh6O2YpCfj5+XHo0KHsR2UDtWvXdnQIWeKMbQhgMBjOOzqGrJB2zDlpQ+tw9XaU4SAhhNAxSQJCCKFjkgSEEELHsjQnIFxXmzZt0LYN/+WXXxwcjXOLjIzkk08+AWDhwoUULFjQwREJYTvSExBCCB1z2p7AP//8w+uvvw7AkSNHKF7cZSrGnMq4ceMA2LBhAwMGDHBwNLYTFxdHQkICAJ6enuTNmzfb77Vt2zZWr14NwNKlS+nevTtubnK+JHKnHH+yw8PDCQ8PJyQkxBrxKAcOHMDf3x9/f3+rvq+eTJkyhXHjxjFu3Dg8PDxo3rw5zZs3d3RYNvH999/j7e2Nt7c3wcHBOXqv559/Xt3u1asXd+7cyWl4uhMVFYWvry++vr5cvXrV0eGIdOQ4CWzbto1t27axdOlSa8QDgMlkIjw8nP/++4///vvPau+rN3v27CE+Pp74+HiaNGlC/fr1qV+/vqPDsrlevXrlqG775s2bVowm94mMjCQqKirdY/r06YOnpyeenp7kz5/fTpHlLteuXaN///7kyZOHPHny2Oy3UPq4QgihYzmeEwgMDASgcePGOQ5Gc//+fb7++mv69+8PIPMByYSHhwMwcuRIFixYkOZZ1h9//MG+ffuoXr06ANOmTbNbjI529+5dmjZtyl9//QVAuXLlMv3a+Ph4Ro0aZfHYr7/+Srdu3awaoyvShnwbN27MnDlzaNu2barHnTlzhhUrVjB16lQAihQpYrcYXVl0dDTx8fE89thjAFSqVIno6GiWLVsGwJNPPpniNX/++ScAL774Yrb/3RwngcTExJy+RQpaeV61atWs/t6urk2bNgD8/fffjBkzhkqVKqV63MCBA7l+/Trr1q0DoEyZMnaL0RGqVKlicf/OnTsMGzYMgKCgIPLly5ep97l+/Tpbt261eny5wbx58wDo0qVLmgkAzEnTaDTy7rvv2is0l5aUlARAp06dOHz4MKdPnwbMJ8Nt27alZcuWab72wYMHOf73ZThICCF0LEc9gcuXLxMREWGtWJRbt24B8MYbb1j9vV1d4cKFATAYDMTHx6d4Xvv/ER4ejpubG3FxcXaNz1HeeOMNZs+eDZgnhgHVjW7fvj1NmzbN1PsUKVKEatWq8c8//6jH5IzWbOPGjQBqmDYtly5dUgsTRfoSExPp06cPAKtWraJp06aEhYUB5u/42LFj8fT0tGkMOUoCW7ZsISYmxlqxEB0dDZiHOgCKFi1qtffODWbMmKHGAJ977jke3b42Pj6er7/+GjB3JbWKID1wc3OjY8eOAMyePZvjx4+r58aOHUvDhg0BMqxUiYqKskgAwuzevXtq6MFgSH/n9qCgILy8vPDw8LBHaC4rISGB7777ju+//x6Ahg0bsnLlStavX6+OyWg+1NvbO8dx5CgJJP+iPfvsszkORhvDvXz5MjVr1pQPUTJ3795lwoQJahHUkiVLKFCggMUxo0aNYs6cOYB5MlQ7c9MLbdy/cePGFp/N/fv3q96lj4+PxWsSExPVwjCARYsW2SFS11OoUCGKFSsGmE8wjEYjefKk/vMRExPDyy+/zOOPPw6Q7rF6pM2jDhgwgNmzZ1OzZk0A5s+fj8lk4uOPPwagfPnyGf4GJl/Tkl0yJyCEEDpmtfRcr169LL9GG68ODQ1l7ty5LF++XD0XGBiY6YqO3OzKlSsAvP7661y7dk2VLz5aLrZkyRImT56s7mulu3r02muvqfJETWhoKGDuCZw5c0YNq0VFRdGvX7803+u5556TxU7/0717dwC+/PJLrl+/rrYk0Uoakzt+/LiqZBs9ejQ1atSwX6BO7tixYwBqDqtRo0aAeXFYcHAwd+/eBcw92kd/AyMiIrhw4QIATz/9tFU2N7RaEkhtaf3ly5cBcwnUrl27OHv2LGAeu54xY4bqFnl5eVn8ByckJOi6PFQrGduxY4daf5GUlISbmxu7du0CoFSpUnTq1InY2FjAvNulyWRS+wO1aNHCAZE7h6ZNm9K7d29mzpypHktrcldr17T89ddf7N69myZNmlg9TlfTt29fAMLCwpgzZw7fffcdAJ9++in58uVTa1hMJhN37txRSUASgKVnnnkGMJdxT506lenTpwOovzUhISGMGDFC3d+wYQPHjx/HaDQC5s+mNYbhc5QEChQooCaJ3n777RS12trZlslkIk+ePCpr1atXj0GDBvHKK68A5vkELy8vypYtC5gniPW8QOyPP/4AoEmTJqp93dzcqFGjBtu3bwdg+/btLF++XH3xLl68SKlSpZg0aZJjgnYygwcPZtasWRke5+bmluFE544dOyQJ8HDOZe7cuXTs2JGffvoJeDg3qO0RZDAYOHTokFV+oHIj7aRjwoQJtG3bVv1OXrhwgSlTplgc9+h2PG+//TZPPfUUkHJ+K9vxWOVdhBBCuKQc9QRGjx5NxYoVAdi5c2eK5ytXrgzAhx9+SKVKlShfvnya77Vx40Z1JlG1atWchOXS9u7dq7bQ9vDwUBUWv//+O4UKFeKzzz4DzKsyt2/fruqxDQYD165dU20cGhqqXivSVqNGDdzc3NQKWG9vb1W3LVLn5uZGgwYNaNCggcXj2m/Aa6+9RpUqVWT77QzkyZOH2rVrU7t2bQA1vDZy5EgAAgICMnwPrZz+6aefzn4c2X7l/3Tq1Mni7+xKXhvbtWvXHL2XK5s2bZraCiIwMDDFgjltnPvBgwf89ttvFs+ZTCa1xFwSQOqKFy9O1apVGT16NIAaktRcunRJkkA2yfqK7NHWRw0cOBB/f/9M/fhrrDEk5JTFu++9956jQ3CYDz74QI0/a6uDk9MqB7RxRG3+QOuRWWPxSG5QvHhxNUl+6tQpNY7aq1cvSpcunaX3WrlypfpiSsVa6oxGIytWrACgbt26ssYnC7Rqobi4ODp06JCl11rjZE/6a0IIoWNO2RPQM62sLjWxsbEsWbIEMJfkVq9eXTfbQmSVp6en1Sqlzp8/b5PdcnOT2NhYdu/eDcDkyZNzdHlPPYmPj1drWnx9fWnVqpXdY3CqJKBNcp4/f54KFSo4OBrns3TpUsaOHQtA6dKl2bt3r4Mjyn0KFizIE088waVLlywe1xbpTZgwQSY8U5H8s9i6dWsHRuJagoOD1eVQ165di5eXl91jcKokoNVra4ulxENRUVFMmjRJtdGQIUNSnTMQOePt7c3OnTvVhnParqza2drYsWNlvDsV+/btU7e19T4ifVevXmXYsGF06dIFINM73VqbnNIIIYSOOVVPQLN9+3b8/f0dHYZTefnllwkPD1d7uffu3dvBEeVefn5+any7fv36XLt2TT137ty5VC/zp2eXL19mzJgxNG/e3NGhuJQ5c+bg5+fH0KFDARy206pTJQG5EEXaPvvsMz7++GPef/99R4eiC76+voD5wjTDhw9XE/aPXsNBmK81YDAYeOGFFxwdiku4d+8eAN9++y1DhgxR5d2OIsNBQgihY07TE2jVqpW6IIpIqVu3bnTr1s3RYehOgwYN1NCQSN3atWspUaIEgwYNcnQoLmHhwoWAeTsdZ1id7jRJwN/fX6qChHBRtWrVsvm1cHODBw8eqEvAbt++3SEloY9ymiQghHBNgwcPZvDgwY4OwyX07duXGTNmAM6zUabMCQghhI5JT0AIIexk3rx5jg4hBUNWyjINBsMN4LztwskWX5PJ5DKXIXPSNgRpR2txmXaUNrQOV2/HLCUBIYQQuYvMCQghhI5JEhBCCB2TJCCEEDomSUAIIXRMkoAQQuiYJAEhhNAxSQJCCKFjkgSEEELHJAkIIYSOSRIQQggdkyQghBA6JklACCF0TJKAEELomCQBIYTQMUkCQgihY1m6slixYsVMfn5+Ngole86dO0dkZKTB0XFkljO2IUBoaGikK13IQ9ox56QNrcPV2zFLScDPz49Dhw5lPyobqF27tqNDyBJnbEMAg8HgjFdGSpO0Y85JG1qHq7ejDAcJIYSOSRIQQggdkyQghBA6JklACCF0TJKAEELomFMkgblz52IwGKhXrx716tXjjz/+cHRITuP8+fOcP5/1Yon9+/cTExNjg4iEMPvtt9/47bffKF68OAsWLMjw+Li4OOLi4oiIiODBgwc8ePDADlGKjNgsCXz77bdcvnyZy5cvp3mM0WjEaDTy+eefYzAYOHjwIAcPHmTq1Km2Csul/P3339StW5e6devy/PPPk5iYmOFr9uzZw549e2jYsCGff/65HaLM3ZYuXUrx4sXp1asXvXr1cnQ4TiMwMJDOnTvTuXNnbt68yZIlS9I93mg00rNnT3r27EnZsmXZv38/+/fvt1O0uYuPjw8+Pj64u7urP9u3b8/2+2VpnUBGYmNj2bdvHwBjx47lm2++AeDixYu4u7un+bro6GhrhuHyjh07BkDjxo25ceMGgPo7Ix4eHgC4u7uzYsUK8uXLB8C0adNsEGnuZDKZ+OyzzwCYNWsWZcqUYfjw4Q6OyrkEBgZy/fp1AIoWLcqiRYvSPd5kMvHff//ZIzSXkpSUpJKhn58fZcqUSff43bt3c+fOHQAMBgMlS5ZUr80upxgOEkII4RhW7QlcuXKF119/3ZpvqTvx8fEMGDAAgOvXr+PmZs7Tw4cPV7fTU7duXQB8fX0JCwvj999/B8zjsZ6enjaKOne5ePEiM2bMUPdnz56d4Rmans2cORMfH590j0lMTFRzW+7u7hkerxcbN26kZcuWALRq1YpFixal+T2Njo7m008/JS4uTj3WtGlTACpUqJDtGKyaBETODR06lB07dqj7WkIICAjI1vudOHECMM8V+Pv75zi+3GLjxo0AbN++ndGjR1OgQAHAnIS1LyXAwIED5cTmEZcuXeLWrVtUrlwZgLfeeivD16xYsYKrV68C8O677/Lkk0/aNEZnkZCQQN68eVN9zmg0snz5cnV//fr1xMbGppkELl68SFhYGI899hgAderU4f/+7/9yHKMMBwkhhI5JT8CJXLx4kcWLF6v7xYsXp1+/fg6MKHeKiIigbdu2gHkifeTIkeq5nj17cuTIEQYOHAiYCxy0yXW900o6X3jhBW7fvq2q+LReVFqio6OZP3++uq+1vR6EhITw0ksvWTymDef07duXZcuWqcd//vlnihQpkuI9tKrA0aNHA+bJYYDTp09TpUqVHMdolyRw9OhRnn/+eXv8Uy7p4sWLADzzzDNq5h9g9erVlC1bNlvv+eabbxIWFqbud+nShQsXLuQs0FwgNjaWqVOncv/+fQDatWtH4cKFuXnzJmDukj/22GOMHTsWQBLA/yQmJjJo0CDAnES9vb1p3Lhxpl577Ngxi7U/ehqWfDQBGI1G+vbtC8CCBQvImzcvQ4cOBUizPVevXg2Yh9Q++OADNmzYAGRuGC4zrJoEtPLQR40ZM4bly5er8sWQkBDOnz9vMR6mZ9ocgJYAXnnlFSBn22RPnDiRQ4cOsWfPHsD84RMwefJkpk2bRokSJQAYP3488LCtb926xQ8//CA//o84ePAg3333HWAuTdy3b1+Gk+XaZ+6rr74CHvYAvLy8bBipc9LO5qtWrcq5c+cAyJs3L+PHj1fzfqk5f/48H3/8sbq/Zs0aevfuDWCVXgDInIAQQuiaVXsCK1euTPXxNWvWUKFCBfLkMf9z169fJzY2Ns33GTdunDXDcnrJFyKVLFmSWbNmAaRZVZAZefPmtTibjYuLUz0Nb2/vbL+vq9KqgQICAihRogQTJ04EzKW0oaGhqnyxS5cudOzY0WFxOpukpCQAi20hqlSpkqnFSdr81u+//07+/PmZNGkSgO5KlePj49Vq83PnzqlyzgULFvDyyy+n+9q2bdtaDBG3atWKOnXqWDU+qyWB8PDwdJcup7d9xKP01l3U5gQMBgNNmjThqaeeytb73L9/3+IDExUVpW7fvn2bBg0aAA9XJOvFgQMH6NmzJ2D+UWvatCkmkwkwb28yYsQIdeyoUaMwGAxEREQA5sk3rd30SNt6ZN68eTz++OOAeV+q/PnzZ/jakydPqtvVq1fX5dqA+Ph4+vbty8KFCwFzAtTG9LUS27QcOHCAf//9V92vVasWc+fOzdHJYWqslgR8fHx46623LGa7s0r7kN27d89aYbmcnTt3MmXKFAB69OiR4vlTp04B8MMPP6R47tChQxw4cCDN99Z+2PTmxx9/tDgJWbRoUYptDrSkUK1aNd5880327t0LoP5f6NGSJUsIDAxU97XeQGoVLI9avny5xR5gnTt3tnp8riAoKMiiMspoNPLOO++o+56enmpieOnSpYSFhanPYkREhMUmkE2bNrVJL0rmBIQQQses1hMoUKAAQUFBtGnTBiDdGe8hQ4ZQunRpOnToAMDdu3eBh2cY06dPJygoyFqhOb1u3boB5jOtCxcuMHjwYAD1tzUULlyYI0eOWO39XMmECRNo3bq1uh8WFqbmBC5cuMATTzxBvXr1APOQHDysZGnUqJGdo3UeixcvVmel3bt3T7Mk8datW+zevVsNM44bNw6j0aheW7duXbp3726foJ3M7du3VTuAuSeQvHQbUq6b0OZh3Nzc8PX1pV27doB5qNIWrDoxXKBAAbXkPvnS+7Ro441aCdnZs2cBiIyMtGZYTm/evHmAuSZ99uzZ2X6ft99+22KLg8mTJ6u1AR06dMj2mgNXV7hwYV577TV1v1q1amoy/rHHHuPgwYNqN0aRumrVqqmSz/379xMfH6/2V/r999/TvXbFu+++q7vJYE337t1p1qxZpo8PDg5mwoQJgHmx6F9//WXzQg6HrhjWGkdLAno3ffp0pkyZotZPhIeHWzz/xhtvULp0aQBCQ0N59913LZ53d3dXFVgAa9euVUkgM0lZD0wmE6tXr1a9z59++kkSQCaMHDlSrVhNXnCgqVSpkurRDhs2jKSkJD755BMAtchMj0qVKkWpUqUydeyRI0fYtGmTGhGZNm2aXSr5ZE5ACCF0zKE9gZxcDSc30q4SlJk69YzKy65cuWJRXibMQkJC6N27t9qCV0/72GSVv78/W7duBVJe+KlGjRqqXr1r164W9e4jRowgKSlJbWue3gWlBBZbmERERKi5u5xsD50VDk0C6S0YEzlTunRpqlatyqVLlxwdilNISEgAzCV7jz/+uFqQJ9I2aNAgNaRz9epVVTb73nvv4eHhkWKcX2tjbSI0+WS8SJ3RaFQLycLDw5k/f77dfvw1DksC0dHRfP/9947653WhTJkyqrrF2qsMXY22rmLBggX079+f8uXLOzgi11CwYEHAPOZfqVKldI/dtm0bYN4n56233srUgjK9mz59OkuXLgXgiy++oH379naPQeYEhBBCxxzWE0hMTMzSVhIi62bOnKlqjgsXLuzgaBzrxx9/BMxluNq1AoR1JV8ZW65cOZkLSIP2nZw2bRpffvkl5cqVA8zDb8mr++zFYUnAYDCoi1FoNcba0IWtFkXojdaVFw+32xg2bJhu10vYmnZNBpE+bfuNL774Ak9PT7XVi3bZSHuT4SAhhNAxh/UEChUqxP79+wGoWbMmYN5OIvl9IawhISFBXdRDKtJsR9squm7duvIdTkfyXXwnT55M8eLFHRiNg0tEtS2TtTEyIWwhISGBGjVqAA/3qRLWV6tWLeDhVbRE+jp16mRx1TBHkQvNi1yvQIEC7Nq1y9FhCAFgsT23M5A5ASGE0DFJAkIIoWOG5HtdZ3iwwXADOG+7cLLF12QyOXZmJQuctA1B2tFaXKYdpQ2tw9XbMUtJQAghRO4iw0FCCKFjkgSEEELHJAkIIYSOSRIQQggdkyQghBA6JklACCF0TJKAEELomCQBIYTQMUkCQgihY5IEhBBCxyQJCCGEjkkSEEIIHZMkIIQQOiZJQAghdEySgBBC6JgkASGE0LEsXWi+WLFiJj8/PxuFkj3nzp0jMjLS4Og4MssZ2xAgNDQ00pWu5iTtmHPShtbh6u2YpSTg5+fHoUOHsh+VDdSuXdvRIWSJM7YhgMFgcMbL46VJ2jHnpA2tw9XbUYaDhBBCxyQJCCGEjkkSEEIIHZMkIIQQOuZUSaBFixa0aNGCzZs3OzqUXGPIkCEMGTIEd3d3zp49y9mzZx0dkkszGo3MnDmTmTNn0qNHD0qXLu3okIROxMfH4+/vj7u7O+7u7pw4ccIq75ul6qCsSkxMBODKlSs88cQT6R57+/Ztdu3aBUD//v1tGZYuPHjwgM2bNzN9+nQAunfvTqlSpRwcletKSkoCYPDgwapNy5Qpw8qVKx0ZllOIj4/Hzc2NPHlS/zlJSEhg06ZN9OrVCzD/HkRFRQFQsGBBu8XpqmJjYwFo27YtO3fu5NVXXwXA19fXKu9v0ySwb98+AA4ePMjAgQPTPdZoNBITE2PLcHTlyJEjtG7dGm9vbwDGjRtH/vz5HRyV61q7di2ASgAAv/zyCy+88IKjQnIaffv25cyZM0ybNg2Ap556yuL5hQsX8umnn6r7TZo0wdPT064xujItea5fv55ixYqxZs0awHoJ1KmGg4QQQtiXTXsCixcvBqBkyZK2/Gd0ZcSIEQCMGTMm1efv3bsHwIABAwAYP348AMWKFbNDdLnT6tWrGTVqFABeXl58/PHHANSpU8eRYTlcaGgoAMuWLSMmJkbNN2k9AaPRCMBvv/0GQOHChQFzrzRv3rz2Dtdl/ffff+p2w4YNrT+EZjKZMv2nVq1apqwwGAwmg8FgKl26dIbHhoaGmtzc3Exubm6mLVu2ZPrf+F9MWfrvcOSfrLZhcgEBAaqN2rRpY7px40aKY06fPm06ffq0Oi6zgEPW/O+09Z+ctGNys2fPNnXt2tV09OhR09GjR1M8f/DgQZOXl5f6LO/atSvd93OldsxJG4aEhJi8vb1N3t7eJnd3d5O7u3uKY2bOnGmaOXOmev6PP/4w/fHHHxm+tyu1ockKn8XFixebFi9ebCpbtqwpOjra4rl///3XlC9fPlO+fPlM7u7uprCwsEy/b2bbUYaDhBBCx2w6HGRORvD5559n6XitEkM8tGzZMubMmYPBYN4rr2rVqimGeOLi4pg8eTIABoOBhg0b2j1OVzNs2DDu3LmjKi5q1qwJmNsSoEGDBsTGxqrJuFdeecUhcTqTkJAQ3nzzTTX0CDBx4kSLY+7du8c333yj7nfr1k33w2ePSkpKonfv3sydO1c9tnDhQjURnJiYyNChQ4mPjwfMbfzkk09aPQ6bJgHtB0v7Oz1//fWXOs7NTTooGm0ses6cOdy4cYPevXsD8H//93+pHn/8+HF1u1u3brYP0AVFR0fTvXt34OEcSv369S2OGTJkCGAuz+vXrx/PP/88kLnPcm4VEhICQLNmzVSJJ8CkSZMsyrqNRiNjx44lIiICMLdtYGCgVAQ9onfv3gQFBanPVLFixejSpYt6/tq1a6xZs0Y9/9Zbb9kkDpsmgaxI/qHSuz/++AOA4OBgZsyYAUC5cuVYvXo1r7/+OgD58uVL8bqTJ09y5MgRwHxG26JFCztF7Py03uXJkydp3LgxV69eBaB06dLs3LmTChUqAOYf/QULFhAYGAiYy/BGjRpFkSJFHBO4g2k9og0bNtCjRw/g4XdV63X27dsXNzc3tS5oyJAhTJs2jaJFiwLm+nZJAA8tWbIEgLlz51r02JcsWWJRxr1q1SoAvvjiCwAqVapkk3jklFsIIXTMZj0BbZVbVjz++OMANGrUyNrhuAyj0cjGjRsBmDFjhjqD7devH02aNOHBgweAeZWmu7u7el1iYiIDBw4kOjoaMPcEZDXmQ+fOnQMejvlrjh49ajG3Mm3aNIYOHYqHhwcAO3fu1G0v4OzZs6oUedGiRepxPz8/tmzZolasap/DQYMGAebPrbe3N9u3bwegRo0a9gzbqR0+fFgNRYJ5CGj27NkAakV/eHg48LAMvE+fPgAW33drslkS0IY0UhMZGUloaKjF2P+CBQvUGHZay8/1IDQ0lEmTJgHm8WetjbZt28bWrVvZsmULYJ5EL1GihHrdjRs3MJlMavwwf/78JCYm6np+RSs0mDhxIsOHD1ePN23aVE1kakMWwcHBgHmiuFChQuzevRuAZ5991p4hO5XFixdb/PhrihYtyuHDhzl8+DAAb7/9NpcvX1ZDaAaDgfbt26sf/3v37vHff/9Rq1Yt+wXvpDZs2EBCQgJgXnOyZ8+eFMM8q1evBuDmzZtUrlyZQoUKAbBmzRq+/PJLdu7cCVhv/ZXNfm2nT5+uvoTBwcGEhISwYsUK9XzyHyzNP//8A8CECRNsFZbTe+yxx2jatCnwcJHNo7c1BoNBtbFGSwzt27fX9YKcpKQk9aM0dOhQ9fhHH33E3LlzLeZUTCaTWtgIUKFCBapWraqe0+tkcL9+/VRhQnKhoaF88MEH6n7BggXVD5tm/vz56mQuf/78TJo0iQYNGgDmiWS9Jdc7d+4AEBQUpL6zBQsWpFSpUty/f9/iWK3ow83NjaSkJL777jvA3DNIvijPWklAv6eJQgghbNcT6Nmzpxrb3r9/P//++y8fffQRYO5id+jQweL46tWr07p1a1uF4zKefPJJfv31V8C8E6hW7bN//36L4z755BPc3d35888/AfMQR+HChdUwXMWKFe0YtfPp0qULP/30k7qvnfkXL16ce/fuqfsJCQnMmjVLrQMwGAxMmTJFfXarV68mTNXBAAAZ8UlEQVSuegV6U6RIEQ4ePAiYx7LPnzdfsjYwMJC4uDhVv66V2WrzV25ubjx48IBvv/3W4v0OHDgA6LMSUNvIsWzZsqp09tq1a+rx5LQhXIPBwOnTp1W5Mph3rrX2poU2SwJvv/22WixSp04datWqle5EZZ48eXQ7AfcobRgnb968qgut/Z2c0Whk3LhxgHnYok+fPrr/8desW7dOfZmSkpJUocK0adNYunSpmoSLiYlRE3Fgbsc33nhDTcIdO3bMzpE7l+eee87ibzCvXblw4QJnzpwBoFWrVkRFRakftG7duqVYdwGoYc4CBQrYOmynNWLECL788ksg85+tsmXLAub1Fl999ZXVY7LpDKxWLZCRuLg4tdmUyByj0cjo0aPVmf+rr76a5qZyenTr1i21cO7evXssXLhQ3T5y5AhHjx61OF6rdKlatSrVqlWjXbt2AFSrVs1+QbuQcuXKqTUE2nzAlClTAOjatavD4nJ2TZo0UavOhw8fjsFg4PLlywAprk3RokULGjdurEZQtA34rE3mBIQQQsecohbz77//5tatW44Ow6WcOnWK8ePH4+fnB5gvOCEsJb+4yYsvvqhuX7t2zeKykEFBQXz44YcAeHh42KweOzeJjY1VQxMxMTHUr1/fZtsa5DbacNjUqVMBc8k8wO7du7l27ZraJaBnz552KZd3iiSQvBZWZI72ozZy5EgAuWpYFmjXZADzwqcPP/xQ2i8Lzp8/T8eOHdm7dy8AnTt3Zu7cubpek5IT2tzK1atX8fLyonnz5oD91ks5RRK4fv26Gl8U6dPGW6Oioti3b59c3jCTtMqVwMBA5s+fr75oP//8sySATNJWqw8bNoy9e/fSsmVLwFy/LgkgexISEggICADM1UAHDx602rWDM0v+zwkhhI45RU+gcuXKqdbLCkurVq3il19+AWDgwIFUr17dwRG5jh07dgDmdmvWrJlavS69gMzT2uznn38GUPvga3t+iaz7/vvv1VYwbdq0sdlOoelxiiQgMnbv3j3mzZunLswREBAgG8RlgbYtRJEiRZg6dar8+GfDX3/9pW536dJFtofOoYSEBLZu3arWAXzzzTcOKUqQ4SAhhNAxp+kJyA6D6duzZw+3b99Wu19KLyBrtHLG6tWrU758eQdH43q2bdvGvHnzAPPw7dSpU/Hy8nJwVK4tLi6ODRs2qO01tB6BvTlNEpA69/S9+eabvPnmm44Ow2Vp6ykGDx7s2EBcVHBwMD4+PoD5hERKunOuYMGCTrFTgtMkASGE89IufCJyH5kTEEIIHZMkIIQQOmZ49MpU6R5sMNwAztsunGzxNZlMxR0dRGY5aRuCtKO1uEw7Shtah6u3Y5aSgBBCiNxFhoOEEELHJAkIIYSOSRIQQggdkyQghBA6JklACCF0TJKAEELomCQBIYTQMUkCQgihY5IEhBBCxyQJCCGEjkkSEEIIHZMkIIQQOiZJQAghdEySgBBC6JgkASGE0DFJAkIIoWNZutB8sWLFTH5+fjYKJXvOnTtHZGSkwdFxZJYztiFAaGhopCtdzUnaMeekDa3D1dsxS0nAz8+PQ4cOZT8qG6hdu7ajQ8gSZ2xDAIPB4IyXx0uTtGPOSRtah6u3owwHCSGEjkkSEEIIHZMkIIQQOiZJQAghXMDRo0fp0KGD1d9XkoAQQuhYlqqDsis8PJxXX32VsLAwAAoWLGiPf1YXHjx4AMDzzz9PWFgYsbGxAHh4eDgyrFzDaDQSExPD4sWLAejfvz8dO3YEYP78+Y4MzeZMJhMLFiwA4M8//+TDDz8E4LXXXsvwtbGxsZhMJgDy589vuyB1QGvHoKAgfv75Zz755BMAXnrpJau8v12SwC+//ILBkLVSfqPRSJ48dgnPpc2YMQOA//77D19fX9zcpHNnTaGhoRZfttmzZ9OzZ08HRmQ/SUlJ9OjRQ91funQpAFeuXKFIkSLpvvbTTz8lNDQUgKZNmzJmzBg8PT1tF2wuZjQaAZg1axYApUuXtur72/RX9u7duwBMnz4deJjRMrJnzx7279/PoEGDbBZbbjB16lS+/PJLAAwGA5s3b5bEaSWnTp0CoGXLlsDDZKuXBAApv69aLzM0NDTD3kB4eDjHjx8H4Pjx45QoUUK+z4+IiYlh/Pjxaq2T9ll71KZNm9TtMmXKULJkSavGIaeNQgihYzY9bbx16xYAN27coFmzZhQqVCjd4+Pi4gB49913+eGHH2wZmstKSkoCYMqUKQwZMsTiucKFCzsipFzn4sWL1KlTB4B79+7RoUMHPv74YwdHZX8rVqywuF++fHkgc3MCj4qKirJKTLnJ4cOHGTduHCVKlABS7wnExMQQEBCg7rdo0QIvLy+rxmHTJDB27Fh1e/jw4Rke/8svv6jb9evXt0lMriwpKYkpU6YAqGEgkXV37txhzpw5AEycOBGTycTJkycBKF68OMOHD+fOnTsAtGvXTk5I/qd3797Zfu1PP/3EqFGjAGTeKgvWrl3L4cOHAfDx8VFtaE3yf0MIIXTMZj2BS5cusWzZMsA8wVSvXr10j4+JiVELId555x0ef/xxW4XmkqKiopgxYwZfffVVqs/7+PhQoEABO0fleq5cucJnn31GcHCweqxOnTpqQr13794sWbKEJ598EoCRI0c6JE5nEB8fb3E/s2XHSUlJJCYmWjx24cKFTBeG6MWOHTsyPGbRokXqdsOGDSlVqpTV47BZErh69aqqJsioPDQxMZEJEyao47TaZAEHDx4EoEePHvz999+qzG7KlClMmTKFM2fOAPDiiy/KnEA6tC51y5YtiYiIUI+HhITw5JNPEhISAjz87Gnd7qpVq9o5UucQGxub4oSjU6dOmXrtmTNnOHDggMVjJUqUyHKZeG6lVU1OnDgRgM6dO6d63LFjx9iyZYu637VrV5vE4xT1hOfOnWPcuHE0btwYkAlOzaZNm1RZ3b///ounpyfnz5t3hy1evDiBgYHq2GLFijkkRlcQGRmpPlu3bt2iXLlyquTz2Wef5ejRoxaTcg0bNuTdd991SKzOwmQyZfvM/fHHH6dkyZJcu3ZNPSalyw9pc5/379+naNGiaRYdBAYGkpiYqJKvv7+/TeKROQEhhNAxm6VnLy8v3N3dAfNwz8mTJ6levXqqxwYGBlKoUCFVhaG9To9iYmL4559/AGjdurUaUmvVqhVjx46leHHzhYLOnDnDxYsX1eu6detm/2CdnFbhU6tWLVWu7Ovry6JFi3j55ZfVcQMHDiQ6OhqAAgUKsGbNGjXsZjQaOXXqFGXKlAH000vNnz8/+fLls3hM26Ikb9687NixQ/VKN2zYYHFRlfj4eG7fvm3x2suXL7N8+XIA3n//fV1/x/fs2aNuP/PMM1SoUMHieW0obd++fUDmh+Gyy2ZJoFq1anz33XeAeZXlyy+/rP7jtWSgjdPOmDGD5s2b22TSw5XExsby/vvvW6wQ/PzzzwEICAiwmPjdvHmz+lJmxsmTJzlx4gQAb731VooveG6k/fBHRESo8einn36aMmXKqLmUGzdusHv3bvV8s2bNGD16NPfu3VPvERwczNNPPw08/MzmdrGxseoERJPT76c2pl2nTh0qVaqUo/dyVbt372bJkiXq/qM/8EFBQfTv3x8wJ10fHx+ef/55m8Zk04G69u3bA7B//37mzZunFuBMnjyZxo0bs3PnTsA8/qhtTpXczZs3AXNG1BrCx8fHliE7VNu2bdm4caO6X6BAAT766CPAvJAuLi5OJYLt27djMpnw9fUFzAt5kp993b59m6VLl6qziU2bNqmN+3bt2mXzD5azWr9+PRs2bFD3n3jiCYvntaohbTzcYDDg5+fHgAED7BekEzh58iSXLl2y6ntq64b0mgAANm7cqKqumjdvzkcffcSxY8cA84jIjz/+qPYKAvjmm28y3Kcpp2ROQAghdMymPQFtyCEoKAhvb2+1kVyfPn0sjjMYDEyZMoWEhASLx3/66SfAPA7bpEkTW4bqFDp37kxUVBS7d+8GzN3B5557zuKYF198EYDTp09jMBjUuGxG1UG1atVSuxDqpRdQrlw5AH788Uf69u0LpNy+ILWz3YYNG6pqonfeeQdfX1/ZDjkD+fLl44MPPgDMbbpt2zaL5wcNGqSGOfRs5syZ6vbWrVspWbKk6sE/uraiSJEivPPOOzaPyW51W5MmTVKTlytXruTrr79WewWBeay1S5cuFq/RJu8mTZqki/3xW7ZsSbNmzdTagPXr17N27VrAXCIK5n3d06P9WGk/etre4yVLltTFPEByWlli+/bt1dDksmXLmDVrlkU7+vr6Mn78eACqVKmSIvHqUZEiRciXL1+KeQFNyZIl1e6XZcqUYciQIfj5+QHmeZQaNWpYlIh6enpKmShQo0YNtSYlPj6eqKgoNdzTp08fNmzYoLbgXrZsmdX3CUqNXf+vaAtvRowYwezZs9VE08CBAylQoADNmjUDzNUGDRo0UKuG9fTh8fDwUPvXv/TSS4wZMwYwj1GvWrWK8PBwALWQRxtf1SZ9NXnz5rVXyC6lTZs2rF69Wk0Ely1blpCQEFln8YiKFSsSEBCgNpG7e/cukyZNAqB27dp4eXnh7e2d6mtNJpPa6FBY+v7771VvoGvXrlStWlX9zt2/f5/Jkyer3ztt1bqtyZyAEELomENOscPDw7lz547qCTx68eTWrVs7IiynlLwX9MEHH6ju+bp16zh06JCqt5Yz/8xZtmwZwcHBauhiz5490gtIw+DBg1WJsslkynSPvGjRolSuXJkbN27YMjyX9OyzzzJv3rxUnwsKCiImJoZWrVoB5t6YPTgkCURFRZEnTx61na/IPG1c39fXl0OHDunqSlfWEBERQdmyZQkKCgJyXvuemxkMBqss6pKN49KnndiNGzcOwCbbRafHIUlg6dKlVKlSJcOdRUVK2spWbQ7AHtUDucnmzZupVq0ajRo1cnQoumEwGOjYsaOjw3BaR48eBczroipWrGi3HoBG5gSEEELH7NoT0EpCg4ODLfZuEZmnbUOrlYw+uu+ISN+BAwdSXDZRWN+j8yz//vsvlStXdlA0zi35vkvffPON3Uu57ZoEtJr3S5cu0bRpU3v+00LntPmn0aNH06JFCwdHk/t9+umn6vsO5lJckTptXQCYt5KwNxkOEkIIHbNrTyD5rpd62AbCFkqUKAGYF9xl5vJ0wnxRmREjRgCwd+9eB0ejPx999JGuN43LiHY1O0ddUdGuSUCrEJBKgezTSvYCAgIICAhwbDAuolixYlKzbmdNmjSRVcMuQoaDhBBCxyQJCCGEjkkSEEIIHTNkZUm3wWC4AZy3XTjZ4msymYo7OojMctI2BGlHa3GZdpQ2tA5Xb8csJQEhhBC5iwwHCSGEjkkSEEIIHZMkIIQQOiZJQAghdEySgBBC6JgkASGE0DFJAkIIoWOSBIQQQsckCQghhI5JEhBCCB2TJCCEEDomSUAIIXRMkoAQQuiYJAEhhNAxSQJCCKFjkgSEEELH8mTl4GLFipn8/PxsFEr2nDt3jsjISIOj48gsZ2xDgNDQ0EhXupqTtGPOSRtah6u3Y5aSgJ+fH4cOHcp+VDZQu3ZtR4eQJc7YhgAGg8EZL4+XJmnHnJM2tA5Xb0cZDhJCCB2TJCCEEDomSSAX2bx5Mz4+Pvj4+BAXF+focISOxcfHYzAYMBgMjBgxwtHh5Bp9+vShYsWKVKxYkbt371rlPSUJCCGEjtk0CYSFhREWFkarVq2YPXt2hsfPnj2b2bNn06pVK8LCwmwZWq515coVrly5wtGjRx0disPFxMQQExND9+7dKVy4MIULF+bKlSuODks33NzccHNzY9euXY4OJdd45ZVXOHv2LGfPnmXr1q1Wec8sVQdlVdWqVdXtVatW0atXr3SP7927t7rt7+9PlSpVbBZbbjdnzhzq1q3r6DAcJjExkc8//xyA+fPnq8dHjx7Nd99956iwdOnkyZNERETg4+Pj6FBcmtFoZPXq1RQpUgSAwoULW+V9bZoEsuLRnkJGCUOkb/v27dy7d49ChQo5OhSHSEpKYs6cOdl+vclkAsxfPIA8ecxfFYPBZZakOI3bt29z+/ZtSQLZlJSUBMCePXtYvny5Orl+8cUXrfL+MicghBA6ZrMkkNUxfX9//xy9Xli6cOEC0dHRjg7DYU6dOmVxP2/evOTNm5cXXnghU69ft24d69atw8PDAw8PDzW/JbLnxIkTjg7BZSUlJZGUlMRXX30FQN26da061Guz4aBt27ZZ3P/333/TPf7R8f9t27bJnACQkJAAmNtn165dlC1b1sERuYb+/ftb3H/ssccA6NSpU6Ze37VrV4v7jRs3BmDt2rU8++yzVojQNRw8eBCAL774gilTpgDw3HPPZfl9Lly4YNW4covz58+rocaMhsu0su8GDRoAULBgQavEIMNBQgihY1bvCWhd5uSVPu+9916GZ/WZKSHVI22CMjo6WvUKRPp++eUX9u7da/HY+vXr032NNvkWGxtrcV9z8eJFAHbv3q2bnoDJZGLChAkA7Nq1i7Vr1wKZ6wk82n5vvvmm9QN0cWfPnmXIkCGMHTs2zWOSkpKYO3cuAH/99RflypWjRYsWVo3D6kng0WEgSDnenxm9e/eWCqFkbty4wUsvvcTZs2cByJcvX7rHly5dmgIFCtgjNKdz8eJFYmJiLB7LqKv922+/AdC8eXObxeVqoqOjCQ8Pt7gP5uSQUZXUvHnz1O1y5crJMGYy2snc+PHjWbFiBR07dgSgUqVKKY49ffo0/fr1A8wJoUePHpQoUcKq8dglCWTnde+99541wnF5v/76q7p97dq1FGdYye3Zs0fdbtSokdXqiHOzM2fOMH/+fKZPn+7oUJxOwYIFVQ/+xIkTak5g7NixeHh4pPvalStXqtv16tVTte0C1aOaP38+7u7u1KhRI9XjYmNjWbt2rfrOP/HEEzY5SZE5ASGE0DGHLhbT5g+GDh3KqlWrLJ7LzhBSbpS81LFx48bpnoHt2LFD3da6kCJ19+/fB+DAgQOMHz/ewdG4hg4dOgAPF86l5dChQxZzMn369LFpXK4kNjaWkSNHqvuffvopvr6+qR77008/MXjwYNzczOfqK1eutMl8lNWTgPbjnfxHfdu2bfTq1cti8nfbtm0pfviTk/kAc1nt6NGj1f1Ro0al+QWMiIiQ/YLSsWHDBgAqVKgAPPxBe3QvoWeeeQZ/f39mzpwJmHfD1Ktr166xfft2dV8rUjh69Gi6k8OnTp1SxwpLX375Jf/884+6n17BjLa9iTa3V69ePZvEZLMkkNyqVauytNx+1qxZ1gzJ5WhjgMHBwRYVQW+88YbaBmLIkCG0atVKjfuPGzeO6OhoNfZavnx5O0ft3Hr27Jnu89rE8erVq/Hz8+PHH38E4ObNmzaPzVnFxsZy584ddX/x4sUALFmyhGeffVa1Wf/+/SldujTVqlUDUHMH2mRwnTp17Bm2U9IKFXbv3m3x+JgxY9TeVmXLlrXowdvrsydzAkIIoWNW7wlo3ZtZs2ZZrBUQmbds2TKAFBfjuH//vhrL7tevX6rj/h9//DEAxYu7zHW6Hcrb25uyZcuyZcsWAEqVKpXqca+++irwsH31wNvbG+0C6ufOneO1114DzJsTHj58mMOHDwPmNRj58uWjbdu2ABw5cgSAJk2aAODp6WnnyJ1LbGwsrVq1Ah62jeb69etcv35dPbdu3Tq7x2ezieFevXqpss9Hx/7fe+89/P391bh/q1at0p0f0JvkY4baHMCAAQNo166d+nHftm0bJ06c4NtvvwUe1h5rXXI9e+WVVyhdunSa1w545513ePrppwFzKa3245YebV2Gnn7QihQpotYJJF8bYDKZOHHiBF988QVgLk2OiYlh4cKF6rWFChXK0S6uuYnJZCIyMlLd177T2meqdevWAFSsWJGAgAASExPV6zw8PAgJCVGvTb5o1Nvb2yrx2bQ6KDg4GDBXAWmTw6l5NAHofVL4/fffB6By5cpqPLV69eoWx2gLTLy8vAAICAigUaNGfPjhh3aM1DnVrl2bTZs2WVRSaHMpW7ZsoUqVKmovIZE+rTLlUTVr1mTTpk2AuYf6zTffMG7cOPW8t7e3bLv9P/nz51fj/mfOnKFy5coAKdYH3Lhxgx9//FFVBLZt25axY8dSsWJFdYz2fbcmmRMQQggds8s6gSpVqsiOoFlQs2ZNi7/To610NZlM1K5dm7x589o0NldRs2ZNi60jtLPSjLbbEFlXsGBB6tevb/HYsGHDHBSNc8rMd3rChAkW64KmT59u9S0iUiM9gVzCYDBka4vf3MpgMJA/f371J1++fJIAbCQ2NpaAgAB1v3z58rLtSzZoW0Rrjh07Zpd/12kuLwmyX1BWGI1GgoODuX37NmA+w23UqJGDoxJ6dOnSJXXdAYDu3btTtGhRB0bkWi5fvgzAokWLgIe/g/a6Rrj0BIQQQscc2hN49BoCsl9Q5l26dIl27dqp+z169KBkyZIOjEjo1fHjxy3u2+sMNjdISkpSVZS//vorZcqUUdcPsNcuwE41HCSyTysrFbbxySefODoEp6XVwGs//i+99JIjw3E5q1evVrdbtmyZ4QZ91ibDQUIIoWMO7Qloi8K0HUX1vkgsK/z8/NK9wIywLrniWNq6d+9O9+7dHR2GS3Jzc8v2hbisxSmGg7QxMSGcRfJl/kLkZjIcJIQQOiZJQAghdEySgBBC6JghK5eBMxgMN4DztgsnW3xNJpPLbJ7vpG0I0o7W4jLtKG1oHa7ejllKAkIIIXIXGQ4SQggdkyQghBA6JklACCF0TJKAEELomCQBIYTQMUkCQgihY5IEhBBCxyQJCCGEjkkSEEIIHft/NHUCTEpy+A0AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(nrows=5, ncols=5,sharex=True,sharey=True, )\n", + "\n", + "ax = ax.flatten()\n", + "j=0\n", + "for i in range(1000):\n", + " if labelArr[i]==4:\n", + " img = a[i,:].reshape(28, 28)\n", + " ax[j].imshow(img, cmap='Greys', interpolation='nearest')\n", + " j+=1\n", + " if j>=25:\n", + " break\n", + "\n", + "ax[0].set_xticks([])\n", + "ax[0].set_yticks([])\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "oldHeight": 216, + "position": { + "height": "40px", + "left": "910px", + "right": "20px", + "top": "120px", + "width": "340px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "varInspector_section_display": "none", + "window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/01-KNN.ipynb b/01-KNN.ipynb new file mode 100644 index 0000000..b89fb21 --- /dev/null +++ b/01-KNN.ipynb @@ -0,0 +1,246 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n" + ] + } + ], + "source": [ + "from minst import loadData\n", + "dataArr, labelArr=loadData('D:/Jupyter/mnist_train.csv')\n", + "testDataArr, testLabelArr = loadData('D:/Jupyter/mnist_test.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "def calcDist(x1, x2):\n", + " '''\n", + " 计算两个样本点向量之间的距离\n", + " 使用的是欧氏距离,即 样本点每个元素相减的平方 再求和 再开方\n", + " :param x1:向量1\n", + " :param x2:向量2\n", + " :return:向量之间的欧式距离\n", + " '''\n", + " return np.sqrt(np.sum(np.square(x1 - x2)))\n", + "\n", + " #马哈顿距离计算公式\n", + " # return np.sum(x1 - x2)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def getClosest(trainDataMat, trainLabelMat, x, topK):\n", + " '''\n", + " 预测样本x的标记。\n", + " 获取方式通过找到与样本x最近的topK个点,并查看它们的标签。\n", + " 查找里面占某类标签最多的那类标签\n", + " (书中3.1 3.2节)\n", + " :param trainDataMat:训练集数据集\n", + " :param trainLabelMat:训练集标签集\n", + " :param x:要预测的样本x\n", + " :param topK:选择参考最邻近样本的数目(样本数目的选择关系到正确率,详看3.2.3 K值的选择)\n", + " :return:预测的标记\n", + " '''\n", + " distList = [0] * len(trainLabelMat) # [0]*5=[0 0 0 0 0]\n", + "\n", + " for i in range(len(trainDataMat)): #获取训练集中当前样本的向量\n", + "\n", + " x1 = trainDataMat[i] #计算向量x与训练集样本x的距离\n", + " curDist = calcDist(x1, x) #将距离放入对应的列表位置中\n", + " distList[i] = curDist\n", + " \n", + " topKList = np.argsort(np.array(distList))[:topK] #前K个升序排序 \n", + " '''排序的只是索引index!!!!!'''\n", + " \n", + " labelList = [0] * 10 \n", + " for index in topKList:\n", + " '''遍历的是array里的元素!!!!'''\n", + " \n", + " #trainLabelMat[index]:在训练集标签中寻找topK元素索引对应的标记\n", + " #int(trainLabelMat[index]):将标记转换为int(实际上已经是int了,但是不int的话,报错)\n", + " #labelList[int(trainLabelMat[index])]:找到标记在labelList中对应的位置\n", + " #最后加1,表示投了一票\n", + " \n", + " labelList[int(trainLabelMat[index])] += 1\n", + " \n", + " #max(labelList):找到选票箱中票数最多的票数值\n", + " #labelList.index(max(labelList)):再根据最大值在列表中找到该值对应的索引,等同于预测的标记\n", + " return labelList.index(max(labelList)) " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n" + ] + } + ], + "source": [ + "trainDataMat = np.mat(dataArr)\n", + "trainLabelMat = np.mat(labelArr).T\n", + "testDataMat = np.mat(testDataArr)\n", + "testLabelMat = np.mat(testLabelArr).T" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "test 0 predict:7 true:7 \n", + "test 1 predict:2 true:2 \n", + "test 2 predict:1 true:1 \n", + "test 3 predict:0 true:0 \n", + "test 4 predict:4 true:4 \n", + "test 5 predict:1 true:1 \n", + "test 6 predict:4 true:4 \n", + "test 7 predict:9 true:9 \n", + "test 8 predict:5 true:5 \n", + "test 9 predict:9 true:9 \n", + "test 10 predict:0 true:0 \n", + "test 11 predict:6 true:6 \n", + "test 12 predict:9 true:9 \n", + "test 13 predict:0 true:0 \n", + "test 14 predict:1 true:1 \n", + "test 15 predict:5 true:5 \n", + "test 16 predict:9 true:9 \n", + "test 17 predict:7 true:7 \n", + "test 18 predict:3 true:3 \n", + "test 19 predict:4 true:4 \n", + "test 20 predict:9 true:9 \n", + "test 21 predict:6 true:6 \n", + "test 22 predict:6 true:6 \n", + "test 23 predict:5 true:5 \n", + "test 24 predict:4 true:4 \n", + "test 25 predict:0 true:0 \n", + "test 26 predict:7 true:7 \n", + "test 27 predict:4 true:4 \n", + "test 28 predict:0 true:0 \n", + "test 29 predict:1 true:1 \n", + "test 30 predict:3 true:3 \n", + "test 31 predict:1 true:1 \n", + "test 32 predict:3 true:3 \n", + "test 33 predict:4 true:4 \n", + "test 34 predict:7 true:7 \n", + "test 35 predict:2 true:2 \n", + "test 36 predict:7 true:7 \n", + "test 37 predict:1 true:1 \n", + "test 38 predict:2 true:2 \n", + "test 39 predict:1 true:1 \n", + "test 40 predict:1 true:1 \n", + "test 41 predict:7 true:7 \n", + "test 42 predict:4 true:4 \n", + "test 43 predict:1 true:2 \n", + "test 44 predict:3 true:3 \n", + "test 45 predict:5 true:5 \n", + "test 46 predict:1 true:1 \n", + "test 47 predict:2 true:2 \n", + "test 48 predict:4 true:4 \n", + "test 49 predict:4 true:4 \n", + "accuracy:0 \n" + ] + } + ], + "source": [ + "errorCnt = 0\n", + "topK = 25\n", + "n = 50\n", + "for i in range(n):\n", + " x = testDataMat[i] #读取测试集当前测试样本的向量\n", + " y = getClosest(trainDataMat, trainLabelMat, x, topK) #获取预测的标记\n", + " print('test %d predict:%d true:%d ' % (i,y,testLabelMat[i]))\n", + " if y != testLabelMat[i]: \n", + " errorCnt += 1 #如果预测标记与实际标记不符,错误值计数加1\n", + " \n", + "accuracy = 1 - (errorCnt / n)\n", + "print(accuracy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "oldHeight": 210, + "position": { + "height": "40px", + "left": "705px", + "right": "20px", + "top": "133px", + "width": "481px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "varInspector_section_display": "none", + "window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/02-NaiveBayes.ipynb b/02-NaiveBayes.ipynb new file mode 100644 index 0000000..fbaf1f1 --- /dev/null +++ b/02-NaiveBayes.ipynb @@ -0,0 +1,185 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n", + "start read file\n" + ] + } + ], + "source": [ + "from minst import loadData\n", + "trainDataArr, trainLabelArr = loadData(fileName='D:/Jupyter/mnist_train.csv',data_bin=1)\n", + "testDataArr, testLabelArr = loadData(fileName='D:/Jupyter/mnist_test.csv',data_bin=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import time\n", + "\n", + "def getAllProbability(trainDataArr, trainLabelArr,K=10,alambda=1):\n", + " '''\n", + " 通过训练集计算先验概率分布和条件概率分布\n", + " :param trainDataArr: 训练数据集\n", + " :param trainLabelArr: 训练标记集\n", + " :param K: label个数\n", + " :param alambda: 平滑算子(防止出现0)\n", + " :return: 先验概率分布P(Y)和条件概率分布P(X=x|Y=y)\n", + " '''\n", + " featureNum = 784 #特征数\n", + " \n", + " '''先验概率分布P(Y)'''\n", + " Py = np.zeros((K, 1))\n", + " for i in range(K):\n", + " Py[i] = (np.sum(np.mat(trainLabelArr)==i)+ alambda)/(len(trainLabelArr)+K) #np.sum(trainLabel==i)---矩阵trainLabel==i中Ture的个数,即label中有多少个为i的标记\n", + " Py = np.log(Py) #转换为log对数形式\n", + "\n", + " '''条件概率分布P(X=x|Y=y)'''\n", + " Px_y = np.zeros((K, featureNum, 2)) \n", + " for i in range(len(trainLabelArr)): #计算y=label,第j个特征为0和1的个数\n", + " label = trainLabelArr[i]\n", + " x = trainDataArr[i]\n", + " for j in range(featureNum):\n", + " Px_y[label][j][x[j]] += 1 # x[j]=0或1\n", + "\n", + " for label in range(K): \n", + " for j in range(featureNum): \n", + " \n", + " Px_y0 = Px_y[label][j][0] #获取y=label,第j个特诊为0的个数 \n", + " Px_y1 = Px_y[label][j][1] #获取y=label,第j个特诊为1的个数\n", + " \n", + " #分别计算对于y= label,x第j个特征为0和1的条件概率分布\n", + " Px_y[label][j][0] = np.log((Px_y0 + alambda) / (Px_y0 + Px_y1 + 2*alambda))\n", + " Px_y[label][j][1] = np.log((Px_y1 + alambda) / (Px_y0 + Px_y1 + 2*alambda))\n", + "\n", + " return Py, Px_y \n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "Py, Px_y = getAllProbability(trainDataArr, trainLabelArr)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def NaiveBayes(Py, Px_y, x,K=10):\n", + " '''\n", + " 通过朴素贝叶斯进行概率估计\n", + " :param Py: 先验概率分布\n", + " :param Px_y: 条件概率分布\n", + " :param x: 要估计的样本x\n", + " :return: 返回所有label的估计概率\n", + " '''\n", + " \n", + " featrueNum = 784 #设置特征数目\n", + " P = [0] * K #建立存放所有标记的估计概率数组 \n", + "\n", + " for label in range(K): #对于每一个类别,单独估计其概率 \n", + " #在训练过程中对概率进行了log处理,所以这里原先应当是连乘所有概率,最后比较哪个概率最大.但是当使用log处理时,连乘变成了累加,所以使用sum \n", + " sum = 0 \n", + " for j in range(featrueNum):\n", + " sum += Px_y[label][j][x[j]]\n", + " P[i] = sum + Py[label]\n", + "\n", + " return P.index(max(P)) #找到该概率最大值对应的所有(索引值和标签值相等)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "errorCnt = 0\n", + "\n", + "for i in range(len(testDataArr)):\n", + " presict = NaiveBayes(Py, Px_y,testDataArr[i])\n", + " if presict != testLabelArr[i]:\n", + " errorCnt += 1\n", + "\n", + "accuracy = 1 - (errorCnt / len(testDataArr))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "oldHeight": 233, + "position": { + "height": "40px", + "left": "1527px", + "right": "20px", + "top": "114px", + "width": "350px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "varInspector_section_display": "none", + "window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/03-DecisionTree.ipynb b/03-DecisionTree.ipynb new file mode 100644 index 0000000..1ace579 --- /dev/null +++ b/03-DecisionTree.ipynb @@ -0,0 +1,6664 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n", + "start read file\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from minst import loadData\n", + "trainDataArr, trainLabelArr = loadData(fileName='D:/Jupyter/mnist_train.csv',data_bin=1)\n", + "testDataArr, testLabelArr = loadData(fileName='D:/Jupyter/mnist_test.csv',data_bin=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def calc_H_D(trainLabelArr):\n", + " '''\n", + " 计算数据集D的经验熵,参考公式5.7 经验熵的计算 \n", + " :param trainLabelArr:当前数据集的标签集\n", + " :return: 经验熵\n", + " '''\n", + " H_D = 0\n", + " trainLabelSet = set([label for label in trainLabelArr]) #将当前所有标签放入集合中(防止没有出现过的标签,导致log2(0/D) = log2(0))\n", + " \n", + " #计算|Ck|/|D|\n", + " for i in trainLabelSet: \n", + " p = trainLabelArr[trainLabelArr == i].size / trainLabelArr.size\n", + " H_D += -1 * p * np.log2(p)\n", + " return H_D" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def calcH_D_A(trainDataArr_DevFeature, trainLabelArr):\n", + " '''\n", + " 计算经验条件熵\n", + " :param trainDataArr_DevFeature:切割后只有feature那列数据的数组\n", + " :param trainLabelArr: 标签集数组\n", + " :return: 经验条件熵\n", + " '''\n", + " H_D_A = 0\n", + " trainDataSet = set([label for label in trainDataArr_DevFeature]) #在featue那列放入集合中,该feature目前可取值数目是多少({0,1})\n", + " for i in trainDataSet: #计算H(D|A)=|Di| / |D| * H(Di)\n", + " H_D_A += trainDataArr_DevFeature[trainDataArr_DevFeature == i].size / trainDataArr_DevFeature.size * calc_H_D(trainLabelArr[trainDataArr_DevFeature == i])\n", + " return H_D_A " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def calcBestFeature(trainDataList, trainLabelList):\n", + " '''\n", + " 计算信息增益最大的特征\n", + " :param trainDataList: 当前数据集\n", + " :param trainLabelList: 当前标签集\n", + " :return: 信息增益最大的特征及最大信息增益值\n", + " '''\n", + " trainDataArr = np.array(trainDataList)\n", + " trainLabelArr = np.array(trainLabelList).T\n", + " \n", + " featureNum = trainDataArr.shape[1] #获取当前特征数目,也就是数据集的横轴大小\n", + " maxG_D_A = -1 #初始化最大信息增益\n", + " maxFeature = -1 #初始化最大信息增益的特征\n", + " H_D = calc_H_D(trainLabelArr) #计算数据集D的经验熵H(D)\n", + " \n", + " for feature_index in range(featureNum):\n", + " #数据集在初始时刻是一个Arr = 60000*784的矩阵,针对当前要计算的feature,在训练集中切割下Arr[:, feature]这么一条来\n", + " #trainDataArr[:, feature]:在数据集中切割下这么一条\n", + " #trainDataArr[:, feature].flat:将这么一条转换成竖着的列表\n", + " #np.array(trainDataArr[:, feature].flat):再转换成一条竖着的矩阵\n", + " trainDataArr_DevideByFeature = np.array(trainDataArr[:, feature_index].flat)\n", + " G_D_A = H_D - calcH_D_A(trainDataArr_DevideByFeature, trainLabelArr) #计算信息增益G(D|A) = H(D) - H(D | A)\n", + " # G_D_A = calcH_D_A(trainDataArr_DevideByFeature, trainLabelArr) / H_D #计算信息增益G(D|A) = H(D | A) / H(D) \n", + " if G_D_A > maxG_D_A:\n", + " maxG_D_A = G_D_A\n", + " maxFeature = feature_index\n", + " \n", + " return maxFeature, maxG_D_A" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def getSubDataArr(trainDataArr, trainLabelArr, A_index, a):\n", + " '''\n", + " 更新数据集和标签集\n", + " :param trainDataArr:要更新的数据集\n", + " :param trainLabelArr: 要更新的标签集\n", + " :param A_index: 要去除的特征索引\n", + " :param a: 当data[A]== a时,说明该行样本时要保留的\n", + " :return: 新的数据集和标签集\n", + " '''\n", + " retDataArr = []\n", + " retLabelArr = [] \n", + " \n", + " for i in range(len(trainDataArr)): #6000\n", + " if trainDataArr[i][A_index] == a: #0,1 #如果当前样本的特征为指定特征值a \n", + " retDataArr.append(trainDataArr[i][0:A_index] + trainDataArr[i][A_index+1:])#那么将该样本的第A个特征切割掉,放入返回的数据集中\n", + " retLabelArr.append(trainLabelArr[i]) #将该样本的标签放入返回标签集中\n", + "\n", + " return retDataArr, retLabelArr" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def majorClass(labelArr):\n", + " '''\n", + " 找到当前标签集中占数目最大的标签\n", + " :param labelArr: 标签集\n", + " :return: 最大的标签\n", + " ''' \n", + " classDict = {} #建立字典,用于不同类别的标签计数\n", + " for i in range(len(labelArr)): #遍历所有标签\n", + " if labelArr[i] in classDict.keys(): #当第一次遇到A标签时,字典内还没有A标签,这时候直接幅值加1是错误的,所以需要判断字典中是否有该key,没有则创建,有就直接自增\n", + " classDict[labelArr[i]] += 1 # 若在字典中存在该标签,则直接加1\n", + " else: #若无该标签,设初值为1,表示出现了1次了\n", + " classDict[labelArr[i]] = 1\n", + " classSort = sorted(classDict.items(), key=lambda x: x[1], reverse=True) #对字典依据值进行降序排序 \n", + " # .items() ----- 以列表返回可遍历的(key, value) 元组数组。\n", + " # key=lambda x: x[1]----- 以(key, value) 的第二项排序\n", + "\n", + " return classSort[0][0] #返回最大一项的标签,即占数目最多的标签" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def createTree(*dataSet):\n", + " '''\n", + " 递归创建决策树\n", + " :param dataSet:(trainDataList, trainLabelList) <<-- 元祖形式\n", + " :return:新的子节点或该叶子节点的值\n", + " '''\n", + " Epsilon = 0.1 #信息增益与阈值Epsilon比较,若小于则直接处理后返回T\n", + " trainDataList = dataSet[0][0]\n", + " trainLabelList = dataSet[0][1]\n", + " \n", + " #打印信息:开始一个子节点创建,打印当前特征向量数目及当前剩余样本数目\n", + " print('start a node', len(trainDataList[0]), len(trainLabelList))\n", + " \n", + " classDict = {i for i in trainLabelList} #将标签放入一个字典中,当前样本有多少类,在字典中就会有多少项\n", + " if len(classDict) == 1: #如果D中所有实例属于同一类Ck,则置T为单节点数,并将Ck作为该节点的类,返回T\n", + " return trainLabelList[0] #即若所有样本的标签一致,也就不需要再分化,返回标记作为该节点的值,返回后这就是一个叶子节点\n", + " \n", + " if len(trainDataList[0]) == 0: #如果A为空集,则置T为单节点数,并将D中实例数最大的类Ck作为该节点的类,返回T\n", + " return majorClass(trainLabelList) #即如果已经没有特征可以用来再分化了,就返回占大多数的类别\n", + " \n", + "\n", + " maxFeature, maxG_D_A = calcBestFeature(trainDataList, trainLabelList) #否则,计算A中每个特征值的信息增益,选择信息增益最大的特征maxFeature\n", + " if maxG_D_A < Epsilon: #如果maxFeature的信息增益比小于阈值Epsilon,则置T为单节点树,\n", + " return majorClass(trainLabelList) #并将D中实例数最大的类Ck作为该节点的类,返回T\n", + "\n", + " treeDict = {maxFeature:{}}#否则,对maxFeature的每一可能值ai,依maxFeature=ai将D分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子节点,由节点及其子节点构成树T,返回T\n", + " \n", + " #在当前数据集中切割当前feature,返回新的数据集和标签集\n", + " treeDict[maxFeature][0] = createTree(getSubDataArr(trainDataList, trainLabelList, maxFeature, 0)) #特征值为0时,进入0分支\n", + " treeDict[maxFeature][1] = createTree(getSubDataArr(trainDataList, trainLabelList, maxFeature, 1))\n", + " \n", + " return treeDict" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 784 60000\n", + "start a node 783 33587\n", + "start a node 782 23938\n", + "start a node 781 18700\n", + "start a node 780 11336\n", + "start a node 779 8724\n", + "start a node 778 7677\n", + "start a node 777 6831\n", + "start a node 776 6242\n", + "start a node 775 5840\n", + "start a node 775 402\n", + "start a node 774 220\n", + "start a node 773 171\n", + "start a node 772 142\n", + "start a node 771 133\n", + "start a node 770 128\n", + "start a node 769 125\n", + "start a node 768 123\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 770 5\n", + "start a node 769 2\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 768 1\n", + "start a node 771 9\n", + "start a node 770 6\n", + "start a node 769 5\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 772 29\n", + "start a node 771 8\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 770 5\n", + "start a node 771 21\n", + "start a node 770 7\n", + "start a node 769 6\n", + "start a node 769 1\n", + "start a node 770 14\n", + "start a node 769 13\n", + "start a node 769 1\n", + "start a node 773 49\n", + "start a node 772 20\n", + "start a node 771 18\n", + "start a node 770 17\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 29\n", + "start a node 771 16\n", + "start a node 770 10\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 769 7\n", + "start a node 770 6\n", + "start a node 769 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 771 13\n", + "start a node 770 4\n", + "start a node 770 9\n", + "start a node 769 8\n", + "start a node 769 1\n", + "start a node 774 182\n", + "start a node 773 39\n", + "start a node 772 32\n", + "start a node 771 13\n", + "start a node 770 11\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 771 19\n", + "start a node 770 17\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 769 14\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 7\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 773 143\n", + "start a node 772 12\n", + "start a node 771 9\n", + "start a node 770 5\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 772 131\n", + "start a node 771 125\n", + "start a node 770 97\n", + "start a node 770 28\n", + "start a node 769 10\n", + "start a node 768 5\n", + "start a node 768 5\n", + "start a node 767 4\n", + "start a node 767 1\n", + "start a node 769 18\n", + "start a node 771 6\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 776 589\n", + "start a node 775 404\n", + "start a node 774 338\n", + "start a node 773 252\n", + "start a node 772 87\n", + "start a node 771 73\n", + "start a node 770 63\n", + "start a node 769 19\n", + "start a node 768 12\n", + "start a node 767 8\n", + "start a node 766 6\n", + "start a node 766 2\n", + "start a node 765 1\n", + "start a node 765 1\n", + "start a node 767 4\n", + "start a node 766 2\n", + "start a node 766 2\n", + "start a node 765 1\n", + "start a node 765 1\n", + "start a node 768 7\n", + "start a node 767 4\n", + "start a node 766 2\n", + "start a node 766 2\n", + "start a node 767 3\n", + "start a node 766 2\n", + "start a node 766 1\n", + "start a node 769 44\n", + "start a node 768 39\n", + "start a node 767 30\n", + "start a node 766 27\n", + "start a node 765 14\n", + "start a node 765 13\n", + "start a node 764 6\n", + "start a node 763 5\n", + "start a node 763 1\n", + "start a node 764 7\n", + "start a node 763 2\n", + "start a node 763 5\n", + "start a node 766 3\n", + "start a node 765 2\n", + "start a node 765 1\n", + "start a node 767 9\n", + "start a node 766 8\n", + "start a node 766 1\n", + "start a node 768 5\n", + "start a node 767 3\n", + "start a node 767 2\n", + "start a node 770 10\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 768 1\n", + "start a node 769 7\n", + "start a node 771 14\n", + "start a node 770 12\n", + "start a node 770 2\n", + "start a node 772 165\n", + "start a node 771 105\n", + "start a node 770 80\n", + "start a node 769 64\n", + "start a node 768 62\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 16\n", + "start a node 768 11\n", + "start a node 767 10\n", + "start a node 767 1\n", + "start a node 768 5\n", + "start a node 767 1\n", + "start a node 767 4\n", + "start a node 770 25\n", + "start a node 769 24\n", + "start a node 769 1\n", + "start a node 771 60\n", + "start a node 770 57\n", + "start a node 769 56\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 773 86\n", + "start a node 772 54\n", + "start a node 771 26\n", + "start a node 770 16\n", + "start a node 769 7\n", + "start a node 768 3\n", + "start a node 768 4\n", + "start a node 767 2\n", + "start a node 767 2\n", + "start a node 769 9\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 767 1\n", + "start a node 768 6\n", + "start a node 767 1\n", + "start a node 767 5\n", + "start a node 766 2\n", + "start a node 766 3\n", + "start a node 765 1\n", + "start a node 765 2\n", + "start a node 770 10\n", + "start a node 771 28\n", + "start a node 770 25\n", + "start a node 769 23\n", + "start a node 768 22\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 772 32\n", + "start a node 771 20\n", + "start a node 770 18\n", + "start a node 769 17\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 12\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 8\n", + "start a node 774 66\n", + "start a node 773 60\n", + "start a node 772 56\n", + "start a node 771 55\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 772 3\n", + "start a node 775 185\n", + "start a node 774 169\n", + "start a node 773 162\n", + "start a node 772 76\n", + "start a node 771 43\n", + "start a node 770 27\n", + "start a node 769 9\n", + "start a node 768 4\n", + "start a node 767 2\n", + "start a node 767 2\n", + "start a node 766 1\n", + "start a node 766 1\n", + "start a node 768 5\n", + "start a node 767 1\n", + "start a node 767 4\n", + "start a node 769 18\n", + "start a node 768 16\n", + "start a node 767 11\n", + "start a node 767 5\n", + "start a node 766 2\n", + "start a node 766 3\n", + "start a node 768 2\n", + "start a node 770 16\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 14\n", + "start a node 771 33\n", + "start a node 770 14\n", + "start a node 769 7\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 5\n", + "start a node 769 7\n", + "start a node 768 2\n", + "start a node 768 5\n", + "start a node 770 19\n", + "start a node 772 86\n", + "start a node 771 84\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 79\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 773 7\n", + "start a node 772 5\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 16\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 13\n", + "start a node 777 846\n", + "start a node 776 479\n", + "start a node 775 369\n", + "start a node 774 302\n", + "start a node 773 253\n", + "start a node 772 244\n", + "start a node 771 231\n", + "start a node 770 224\n", + "start a node 769 216\n", + "start a node 769 8\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 767 1\n", + "start a node 768 5\n", + "start a node 770 7\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 771 13\n", + "start a node 770 7\n", + "start a node 769 3\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 770 6\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 4\n", + "start a node 772 9\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 5\n", + "start a node 773 49\n", + "start a node 772 27\n", + "start a node 771 16\n", + "start a node 770 12\n", + "start a node 769 5\n", + "start a node 768 3\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 7\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 771 11\n", + "start a node 770 8\n", + "start a node 769 7\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 772 22\n", + "start a node 771 20\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 774 67\n", + "start a node 773 28\n", + "start a node 772 13\n", + "start a node 771 10\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 772 15\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 12\n", + "start a node 770 10\n", + "start a node 769 1\n", + "start a node 769 9\n", + "start a node 770 2\n", + "start a node 773 39\n", + "start a node 772 27\n", + "start a node 771 24\n", + "start a node 770 13\n", + "start a node 769 6\n", + "start a node 768 5\n", + "start a node 768 1\n", + "start a node 769 7\n", + "start a node 768 5\n", + "start a node 768 2\n", + "start a node 770 11\n", + "start a node 771 3\n", + "start a node 772 12\n", + "start a node 771 9\n", + "start a node 771 3\n", + "start a node 775 110\n", + "start a node 774 81\n", + "start a node 773 76\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 772 73\n", + "start a node 771 71\n", + "start a node 771 2\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 774 29\n", + "start a node 773 23\n", + "start a node 772 17\n", + "start a node 771 14\n", + "start a node 770 12\n", + "start a node 770 2\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 6\n", + "start a node 771 5\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 776 367\n", + "start a node 775 140\n", + "start a node 774 46\n", + "start a node 773 34\n", + "start a node 772 27\n", + "start a node 771 23\n", + "start a node 770 21\n", + "start a node 769 20\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 770 3\n", + "start a node 771 2\n", + "start a node 773 12\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 774 94\n", + "start a node 773 83\n", + "start a node 772 71\n", + "start a node 771 66\n", + "start a node 770 40\n", + "start a node 769 29\n", + "start a node 768 26\n", + "start a node 767 18\n", + "start a node 767 8\n", + "start a node 766 4\n", + "start a node 765 2\n", + "start a node 765 2\n", + "start a node 766 4\n", + "start a node 768 3\n", + "start a node 769 11\n", + "start a node 768 9\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 770 26\n", + "start a node 769 5\n", + "start a node 768 4\n", + "start a node 768 1\n", + "start a node 769 21\n", + "start a node 768 19\n", + "start a node 768 2\n", + "start a node 771 5\n", + "start a node 772 12\n", + "start a node 771 11\n", + "start a node 771 1\n", + "start a node 773 11\n", + "start a node 772 1\n", + "start a node 772 10\n", + "start a node 775 227\n", + "start a node 774 215\n", + "start a node 773 188\n", + "start a node 772 174\n", + "start a node 772 14\n", + "start a node 771 6\n", + "start a node 771 8\n", + "start a node 773 27\n", + "start a node 772 18\n", + "start a node 771 16\n", + "start a node 770 15\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 9\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 7\n", + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 778 1047\n", + "start a node 777 530\n", + "start a node 776 261\n", + "start a node 775 182\n", + "start a node 774 157\n", + "start a node 773 79\n", + "start a node 772 56\n", + "start a node 771 40\n", + "start a node 770 29\n", + "start a node 769 21\n", + "start a node 768 19\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 8\n", + "start a node 768 4\n", + "start a node 767 3\n", + "start a node 767 1\n", + "start a node 768 4\n", + "start a node 770 11\n", + "start a node 769 7\n", + "start a node 769 4\n", + "start a node 771 16\n", + "start a node 770 15\n", + "start a node 770 1\n", + "start a node 772 23\n", + "start a node 773 78\n", + "start a node 774 25\n", + "start a node 773 21\n", + "start a node 772 20\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 775 79\n", + "start a node 774 43\n", + "start a node 773 22\n", + "start a node 772 12\n", + "start a node 771 9\n", + "start a node 770 6\n", + "start a node 770 3\n", + "start a node 771 3\n", + "start a node 772 10\n", + "start a node 771 5\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 773 21\n", + "start a node 772 12\n", + "start a node 771 10\n", + "start a node 771 2\n", + "start a node 772 9\n", + "start a node 771 7\n", + "start a node 771 2\n", + "start a node 774 36\n", + "start a node 773 33\n", + "start a node 772 32\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 776 269\n", + "start a node 775 186\n", + "start a node 774 164\n", + "start a node 773 75\n", + "start a node 772 48\n", + "start a node 771 39\n", + "start a node 770 21\n", + "start a node 769 20\n", + "start a node 769 1\n", + "start a node 770 18\n", + "start a node 769 3\n", + "start a node 769 15\n", + "start a node 768 10\n", + "start a node 768 5\n", + "start a node 767 3\n", + "start a node 767 2\n", + "start a node 771 9\n", + "start a node 770 8\n", + "start a node 770 1\n", + "start a node 772 27\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 24\n", + "start a node 773 89\n", + "start a node 772 87\n", + "start a node 771 84\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 774 22\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 17\n", + "start a node 772 16\n", + "start a node 772 1\n", + "start a node 775 83\n", + "start a node 774 78\n", + "start a node 773 65\n", + "start a node 772 53\n", + "start a node 772 12\n", + "start a node 771 9\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 773 13\n", + "start a node 772 9\n", + "start a node 771 8\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 774 5\n", + "start a node 777 517\n", + "start a node 776 508\n", + "start a node 776 9\n", + "start a node 775 6\n", + "start a node 775 3\n", + "start a node 779 2612\n", + "start a node 778 1323\n", + "start a node 777 1070\n", + "start a node 776 915\n", + "start a node 775 673\n", + "start a node 774 644\n", + "start a node 773 520\n", + "start a node 773 124\n", + "start a node 772 94\n", + "start a node 771 82\n", + "start a node 770 79\n", + "start a node 769 74\n", + "start a node 769 5\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 771 12\n", + "start a node 770 8\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 772 30\n", + "start a node 771 26\n", + "start a node 771 4\n", + "start a node 774 29\n", + "start a node 773 13\n", + "start a node 772 9\n", + "start a node 771 7\n", + "start a node 771 2\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 773 16\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 772 11\n", + "start a node 771 10\n", + "start a node 771 1\n", + "start a node 775 242\n", + "start a node 774 130\n", + "start a node 773 44\n", + "start a node 772 34\n", + "start a node 771 30\n", + "start a node 770 28\n", + "start a node 769 26\n", + "start a node 769 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 771 4\n", + "start a node 772 10\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 8\n", + "start a node 770 7\n", + "start a node 770 1\n", + "start a node 773 86\n", + "start a node 772 76\n", + "start a node 771 50\n", + "start a node 770 9\n", + "start a node 769 5\n", + "start a node 768 4\n", + "start a node 768 1\n", + "start a node 769 4\n", + "start a node 770 41\n", + "start a node 769 35\n", + "start a node 769 6\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 767 1\n", + "start a node 768 3\n", + "start a node 771 26\n", + "start a node 770 21\n", + "start a node 769 13\n", + "start a node 768 11\n", + "start a node 768 2\n", + "start a node 769 8\n", + "start a node 768 7\n", + "start a node 768 1\n", + "start a node 770 5\n", + "start a node 772 10\n", + "start a node 771 2\n", + "start a node 771 8\n", + "start a node 774 112\n", + "start a node 773 105\n", + "start a node 772 96\n", + "start a node 771 93\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 9\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 5\n", + "start a node 770 1\n", + "start a node 770 4\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 776 155\n", + "start a node 775 133\n", + "start a node 774 79\n", + "start a node 773 66\n", + "start a node 772 42\n", + "start a node 771 9\n", + "start a node 770 5\n", + "start a node 769 4\n", + "start a node 769 1\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 771 33\n", + "start a node 770 32\n", + "start a node 769 31\n", + "start a node 768 30\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 772 24\n", + "start a node 771 20\n", + "start a node 770 12\n", + "start a node 769 8\n", + "start a node 769 4\n", + "start a node 770 8\n", + "start a node 769 5\n", + "start a node 769 3\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 773 13\n", + "start a node 772 11\n", + "start a node 771 10\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 54\n", + "start a node 773 48\n", + "start a node 772 46\n", + "start a node 771 45\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 22\n", + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 774 10\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 777 253\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 776 204\n", + "start a node 775 169\n", + "start a node 774 115\n", + "start a node 773 98\n", + "start a node 772 96\n", + "start a node 772 2\n", + "start a node 773 17\n", + "start a node 772 10\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 771 5\n", + "start a node 772 7\n", + "start a node 771 6\n", + "start a node 771 1\n", + "start a node 774 54\n", + "start a node 773 18\n", + "start a node 772 11\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 771 6\n", + "start a node 770 4\n", + "start a node 770 2\n", + "start a node 772 7\n", + "start a node 773 36\n", + "start a node 772 28\n", + "start a node 771 18\n", + "start a node 770 1\n", + "start a node 770 17\n", + "start a node 771 10\n", + "start a node 770 5\n", + "start a node 770 5\n", + "start a node 772 8\n", + "start a node 771 6\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 775 35\n", + "start a node 774 19\n", + "start a node 773 8\n", + "start a node 772 1\n", + "start a node 772 7\n", + "start a node 773 11\n", + "start a node 772 10\n", + "start a node 772 1\n", + "start a node 774 16\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 772 2\n", + "start a node 773 6\n", + "start a node 776 49\n", + "start a node 775 38\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 774 30\n", + "start a node 775 11\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 774 6\n", + "start a node 773 5\n", + "start a node 773 1\n", + "start a node 778 1289\n", + "start a node 777 702\n", + "start a node 776 606\n", + "start a node 775 529\n", + "start a node 774 510\n", + "start a node 774 19\n", + "start a node 773 12\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 7\n", + "start a node 773 7\n", + "start a node 772 5\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 77\n", + "start a node 774 43\n", + "start a node 773 15\n", + "start a node 772 11\n", + "start a node 771 10\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 773 28\n", + "start a node 772 24\n", + "start a node 771 23\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 774 34\n", + "start a node 773 22\n", + "start a node 772 21\n", + "start a node 772 1\n", + "start a node 773 12\n", + "start a node 772 8\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 776 96\n", + "start a node 775 41\n", + "start a node 774 30\n", + "start a node 773 15\n", + "start a node 772 8\n", + "start a node 771 5\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 771 2\n", + "start a node 773 15\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 771 2\n", + "start a node 772 10\n", + "start a node 771 8\n", + "start a node 771 2\n", + "start a node 774 11\n", + "start a node 773 6\n", + "start a node 772 2\n", + "start a node 772 4\n", + "start a node 773 5\n", + "start a node 775 55\n", + "start a node 774 52\n", + "start a node 774 3\n", + "start a node 777 587\n", + "start a node 776 430\n", + "start a node 775 128\n", + "start a node 774 96\n", + "start a node 773 81\n", + "start a node 772 67\n", + "start a node 771 27\n", + "start a node 770 26\n", + "start a node 770 1\n", + "start a node 771 40\n", + "start a node 770 21\n", + "start a node 769 10\n", + "start a node 768 9\n", + "start a node 768 1\n", + "start a node 769 11\n", + "start a node 768 10\n", + "start a node 767 1\n", + "start a node 767 9\n", + "start a node 768 1\n", + "start a node 770 19\n", + "start a node 769 18\n", + "start a node 769 1\n", + "start a node 772 14\n", + "start a node 771 7\n", + "start a node 770 5\n", + "start a node 770 2\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 773 15\n", + "start a node 772 10\n", + "start a node 771 8\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 774 32\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 28\n", + "start a node 772 24\n", + "start a node 771 23\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 775 302\n", + "start a node 774 294\n", + "start a node 773 270\n", + "start a node 773 24\n", + "start a node 772 16\n", + "start a node 771 12\n", + "start a node 770 1\n", + "start a node 770 11\n", + "start a node 771 4\n", + "start a node 772 8\n", + "start a node 771 2\n", + "start a node 771 6\n", + "start a node 774 8\n", + "start a node 773 7\n", + "start a node 773 1\n", + "start a node 776 157\n", + "start a node 775 69\n", + "start a node 774 25\n", + "start a node 773 9\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 773 16\n", + "start a node 772 10\n", + "start a node 771 8\n", + "start a node 771 2\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 774 44\n", + "start a node 773 32\n", + "start a node 772 15\n", + "start a node 771 9\n", + "start a node 770 6\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 771 6\n", + "start a node 772 17\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 14\n", + "start a node 773 12\n", + "start a node 772 9\n", + "start a node 772 3\n", + "start a node 775 88\n", + "start a node 780 7364\n", + "start a node 779 4163\n", + "start a node 778 3500\n", + "start a node 777 2642\n", + "start a node 776 2442\n", + "start a node 776 200\n", + "start a node 775 145\n", + "start a node 774 103\n", + "start a node 773 47\n", + "start a node 772 40\n", + "start a node 771 34\n", + "start a node 770 31\n", + "start a node 769 27\n", + "start a node 768 26\n", + "start a node 767 3\n", + "start a node 766 1\n", + "start a node 766 2\n", + "start a node 767 23\n", + "start a node 768 1\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 770 3\n", + "start a node 771 6\n", + "start a node 770 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 7\n", + "start a node 773 56\n", + "start a node 772 48\n", + "start a node 771 27\n", + "start a node 770 19\n", + "start a node 769 16\n", + "start a node 768 15\n", + "start a node 768 1\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 770 8\n", + "start a node 769 7\n", + "start a node 769 1\n", + "start a node 771 21\n", + "start a node 770 17\n", + "start a node 769 11\n", + "start a node 769 6\n", + "start a node 768 3\n", + "start a node 767 1\n", + "start a node 767 2\n", + "start a node 768 3\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 772 8\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 774 42\n", + "start a node 773 25\n", + "start a node 772 20\n", + "start a node 771 17\n", + "start a node 770 16\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 773 17\n", + "start a node 772 15\n", + "start a node 771 10\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 770 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 55\n", + "start a node 774 52\n", + "start a node 773 51\n", + "start a node 772 50\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 777 858\n", + "start a node 776 555\n", + "start a node 775 476\n", + "start a node 774 412\n", + "start a node 773 392\n", + "start a node 773 20\n", + "start a node 772 17\n", + "start a node 772 3\n", + "start a node 774 64\n", + "start a node 773 51\n", + "start a node 772 17\n", + "start a node 771 11\n", + "start a node 770 10\n", + "start a node 770 1\n", + "start a node 771 6\n", + "start a node 772 34\n", + "start a node 773 13\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 771 2\n", + "start a node 775 79\n", + "start a node 774 27\n", + "start a node 773 21\n", + "start a node 772 4\n", + "start a node 772 17\n", + "start a node 771 16\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 774 52\n", + "start a node 773 50\n", + "start a node 772 49\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 776 303\n", + "start a node 775 277\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 774 269\n", + "start a node 773 265\n", + "start a node 773 4\n", + "start a node 775 26\n", + "start a node 774 11\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 7\n", + "start a node 774 15\n", + "start a node 773 13\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 778 663\n", + "start a node 777 270\n", + "start a node 776 205\n", + "start a node 775 174\n", + "start a node 774 46\n", + "start a node 773 22\n", + "start a node 772 13\n", + "start a node 771 8\n", + "start a node 770 6\n", + "start a node 769 5\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 770 3\n", + "start a node 772 9\n", + "start a node 771 8\n", + "start a node 771 1\n", + "start a node 773 24\n", + "start a node 774 128\n", + "start a node 773 124\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 31\n", + "start a node 774 19\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 772 4\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 773 12\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 9\n", + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 776 65\n", + "start a node 775 25\n", + "start a node 774 18\n", + "start a node 773 8\n", + "start a node 772 7\n", + "start a node 772 1\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 7\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 775 40\n", + "start a node 774 21\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 17\n", + "start a node 772 13\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 774 19\n", + "start a node 773 16\n", + "start a node 772 15\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 777 393\n", + "start a node 776 187\n", + "start a node 775 119\n", + "start a node 774 104\n", + "start a node 773 67\n", + "start a node 772 26\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 771 19\n", + "start a node 770 12\n", + "start a node 769 4\n", + "start a node 769 8\n", + "start a node 768 2\n", + "start a node 768 6\n", + "start a node 770 7\n", + "start a node 769 6\n", + "start a node 769 1\n", + "start a node 772 41\n", + "start a node 771 35\n", + "start a node 770 23\n", + "start a node 769 20\n", + "start a node 768 18\n", + "start a node 767 17\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 769 3\n", + "start a node 770 12\n", + "start a node 769 7\n", + "start a node 769 5\n", + "start a node 768 3\n", + "start a node 767 1\n", + "start a node 767 2\n", + "start a node 768 2\n", + "start a node 771 6\n", + "start a node 773 37\n", + "start a node 772 33\n", + "start a node 771 29\n", + "start a node 770 23\n", + "start a node 770 6\n", + "start a node 769 2\n", + "start a node 769 4\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 774 15\n", + "start a node 773 11\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 773 4\n", + "start a node 775 68\n", + "start a node 774 63\n", + "start a node 773 57\n", + "start a node 772 56\n", + "start a node 772 1\n", + "start a node 773 6\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 773 2\n", + "start a node 776 206\n", + "start a node 775 105\n", + "start a node 774 80\n", + "start a node 773 33\n", + "start a node 772 20\n", + "start a node 771 17\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 13\n", + "start a node 771 11\n", + "start a node 771 2\n", + "start a node 773 47\n", + "start a node 772 45\n", + "start a node 771 43\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 25\n", + "start a node 773 24\n", + "start a node 773 1\n", + "start a node 775 101\n", + "start a node 774 94\n", + "start a node 773 83\n", + "start a node 772 81\n", + "start a node 772 2\n", + "start a node 773 11\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 771 3\n", + "start a node 772 5\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 779 3201\n", + "start a node 778 1010\n", + "start a node 777 782\n", + "start a node 776 576\n", + "start a node 775 445\n", + "start a node 774 241\n", + "start a node 773 187\n", + "start a node 772 177\n", + "start a node 771 129\n", + "start a node 770 68\n", + "start a node 769 55\n", + "start a node 768 51\n", + "start a node 767 19\n", + "start a node 766 13\n", + "start a node 765 10\n", + "start a node 765 3\n", + "start a node 764 2\n", + "start a node 764 1\n", + "start a node 766 6\n", + "start a node 767 32\n", + "start a node 766 30\n", + "start a node 766 2\n", + "start a node 768 4\n", + "start a node 767 3\n", + "start a node 767 1\n", + "start a node 769 13\n", + "start a node 768 10\n", + "start a node 767 8\n", + "start a node 767 2\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 766 1\n", + "start a node 766 1\n", + "start a node 767 1\n", + "start a node 770 61\n", + "start a node 769 39\n", + "start a node 768 5\n", + "start a node 767 3\n", + "start a node 767 2\n", + "start a node 766 1\n", + "start a node 766 1\n", + "start a node 768 34\n", + "start a node 767 33\n", + "start a node 766 3\n", + "start a node 765 1\n", + "start a node 765 2\n", + "start a node 766 30\n", + "start a node 767 1\n", + "start a node 769 22\n", + "start a node 768 6\n", + "start a node 767 1\n", + "start a node 767 5\n", + "start a node 768 16\n", + "start a node 767 9\n", + "start a node 766 7\n", + "start a node 766 2\n", + "start a node 767 7\n", + "start a node 766 6\n", + "start a node 766 1\n", + "start a node 771 48\n", + "start a node 770 45\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 772 10\n", + "start a node 771 9\n", + "start a node 771 1\n", + "start a node 773 54\n", + "start a node 772 24\n", + "start a node 771 7\n", + "start a node 771 17\n", + "start a node 770 6\n", + "start a node 769 5\n", + "start a node 768 4\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 770 11\n", + "start a node 769 9\n", + "start a node 768 8\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 772 30\n", + "start a node 771 23\n", + "start a node 771 7\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 770 4\n", + "start a node 774 204\n", + "start a node 773 195\n", + "start a node 773 9\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 5\n", + "start a node 775 131\n", + "start a node 774 74\n", + "start a node 773 23\n", + "start a node 772 9\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 770 2\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 772 14\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 12\n", + "start a node 770 11\n", + "start a node 770 1\n", + "start a node 773 51\n", + "start a node 772 26\n", + "start a node 771 23\n", + "start a node 770 11\n", + "start a node 769 7\n", + "start a node 768 1\n", + "start a node 768 6\n", + "start a node 769 4\n", + "start a node 770 12\n", + "start a node 769 8\n", + "start a node 769 4\n", + "start a node 768 1\n", + "start a node 768 3\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 25\n", + "start a node 771 3\n", + "start a node 771 22\n", + "start a node 770 21\n", + "start a node 770 1\n", + "start a node 774 57\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 50\n", + "start a node 772 27\n", + "start a node 772 23\n", + "start a node 771 14\n", + "start a node 770 13\n", + "start a node 770 1\n", + "start a node 771 9\n", + "start a node 770 1\n", + "start a node 770 8\n", + "start a node 776 206\n", + "start a node 775 175\n", + "start a node 774 75\n", + "start a node 773 48\n", + "start a node 772 22\n", + "start a node 771 19\n", + "start a node 770 18\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 772 26\n", + "start a node 771 23\n", + "start a node 770 22\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 773 27\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 23\n", + "start a node 774 100\n", + "start a node 773 90\n", + "start a node 772 85\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 773 10\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 775 31\n", + "start a node 774 24\n", + "start a node 773 22\n", + "start a node 772 21\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 7\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 777 228\n", + "start a node 776 98\n", + "start a node 775 58\n", + "start a node 774 40\n", + "start a node 773 22\n", + "start a node 772 16\n", + "start a node 771 15\n", + "start a node 770 14\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 6\n", + "start a node 771 4\n", + "start a node 771 2\n", + "start a node 773 18\n", + "start a node 772 14\n", + "start a node 771 12\n", + "start a node 770 11\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 774 18\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 773 12\n", + "start a node 772 5\n", + "start a node 772 7\n", + "start a node 771 1\n", + "start a node 771 6\n", + "start a node 775 40\n", + "start a node 774 15\n", + "start a node 773 12\n", + "start a node 772 10\n", + "start a node 772 2\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 774 25\n", + "start a node 776 130\n", + "start a node 775 110\n", + "start a node 774 105\n", + "start a node 773 101\n", + "start a node 772 98\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 775 20\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 774 12\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 773 7\n", + "start a node 774 8\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 778 2191\n", + "start a node 777 1960\n", + "start a node 776 796\n", + "start a node 775 569\n", + "start a node 774 377\n", + "start a node 773 245\n", + "start a node 772 211\n", + "start a node 771 180\n", + "start a node 770 39\n", + "start a node 769 31\n", + "start a node 768 16\n", + "start a node 767 9\n", + "start a node 766 5\n", + "start a node 765 3\n", + "start a node 764 2\n", + "start a node 764 1\n", + "start a node 765 2\n", + "start a node 766 4\n", + "start a node 765 3\n", + "start a node 765 1\n", + "start a node 767 7\n", + "start a node 766 6\n", + "start a node 766 1\n", + "start a node 768 15\n", + "start a node 767 13\n", + "start a node 767 2\n", + "start a node 766 1\n", + "start a node 766 1\n", + "start a node 769 8\n", + "start a node 770 141\n", + "start a node 769 23\n", + "start a node 768 8\n", + "start a node 767 2\n", + "start a node 767 6\n", + "start a node 768 15\n", + "start a node 767 13\n", + "start a node 767 2\n", + "start a node 769 118\n", + "start a node 768 65\n", + "start a node 767 4\n", + "start a node 766 2\n", + "start a node 765 1\n", + "start a node 765 1\n", + "start a node 766 2\n", + "start a node 767 61\n", + "start a node 768 53\n", + "start a node 767 17\n", + "start a node 766 11\n", + "start a node 765 6\n", + "start a node 764 1\n", + "start a node 764 5\n", + "start a node 765 5\n", + "start a node 764 2\n", + "start a node 764 3\n", + "start a node 766 6\n", + "start a node 765 5\n", + "start a node 765 1\n", + "start a node 767 36\n", + "start a node 766 4\n", + "start a node 765 2\n", + "start a node 765 2\n", + "start a node 766 32\n", + "start a node 765 31\n", + "start a node 765 1\n", + "start a node 771 31\n", + "start a node 770 28\n", + "start a node 769 26\n", + "start a node 769 2\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 772 34\n", + "start a node 771 33\n", + "start a node 771 1\n", + "start a node 773 132\n", + "start a node 772 127\n", + "start a node 771 123\n", + "start a node 771 4\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 774 192\n", + "start a node 773 165\n", + "start a node 772 24\n", + "start a node 771 12\n", + "start a node 771 12\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 770 8\n", + "start a node 772 141\n", + "start a node 773 27\n", + "start a node 772 15\n", + "start a node 772 12\n", + "start a node 771 10\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 775 227\n", + "start a node 774 208\n", + "start a node 773 52\n", + "start a node 772 49\n", + "start a node 771 13\n", + "start a node 770 6\n", + "start a node 770 7\n", + "start a node 769 4\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 771 36\n", + "start a node 772 3\n", + "start a node 773 156\n", + "start a node 772 51\n", + "start a node 771 47\n", + "start a node 770 17\n", + "start a node 769 10\n", + "start a node 769 7\n", + "start a node 768 3\n", + "start a node 768 4\n", + "start a node 767 3\n", + "start a node 767 1\n", + "start a node 770 30\n", + "start a node 769 26\n", + "start a node 768 1\n", + "start a node 768 25\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 772 105\n", + "start a node 771 96\n", + "start a node 770 92\n", + "start a node 769 11\n", + "start a node 768 8\n", + "start a node 767 7\n", + "start a node 767 1\n", + "start a node 768 3\n", + "start a node 769 81\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 771 9\n", + "start a node 770 7\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 774 19\n", + "start a node 773 1\n", + "start a node 773 18\n", + "start a node 776 1164\n", + "start a node 777 231\n", + "start a node 776 161\n", + "start a node 775 116\n", + "start a node 774 98\n", + "start a node 773 92\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 18\n", + "start a node 773 13\n", + "start a node 772 9\n", + "start a node 771 2\n", + "start a node 771 7\n", + "start a node 772 4\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 45\n", + "start a node 774 33\n", + "start a node 773 27\n", + "start a node 772 24\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 21\n", + "start a node 770 1\n", + "start a node 770 20\n", + "start a node 772 3\n", + "start a node 773 6\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 774 12\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 7\n", + "start a node 776 70\n", + "start a node 775 35\n", + "start a node 774 11\n", + "start a node 773 10\n", + "start a node 773 1\n", + "start a node 774 24\n", + "start a node 773 18\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 16\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 35\n", + "start a node 774 30\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 781 5238\n", + "start a node 780 3653\n", + "start a node 779 3098\n", + "start a node 778 2709\n", + "start a node 777 2502\n", + "start a node 776 2419\n", + "start a node 776 83\n", + "start a node 775 65\n", + "start a node 774 57\n", + "start a node 773 40\n", + "start a node 772 35\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 771 2\n", + "start a node 773 17\n", + "start a node 772 13\n", + "start a node 771 10\n", + "start a node 770 8\n", + "start a node 770 2\n", + "start a node 771 3\n", + "start a node 772 4\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 18\n", + "start a node 774 12\n", + "start a node 773 10\n", + "start a node 772 9\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 6\n", + "start a node 777 207\n", + "start a node 776 134\n", + "start a node 775 111\n", + "start a node 774 97\n", + "start a node 773 88\n", + "start a node 772 86\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 9\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 774 14\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 775 23\n", + "start a node 774 20\n", + "start a node 773 18\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 3\n", + "start a node 776 73\n", + "start a node 775 39\n", + "start a node 774 29\n", + "start a node 773 11\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 771 3\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 773 18\n", + "start a node 772 17\n", + "start a node 772 1\n", + "start a node 774 10\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 775 34\n", + "start a node 774 16\n", + "start a node 773 12\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 18\n", + "start a node 773 15\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 772 10\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 778 389\n", + "start a node 777 163\n", + "start a node 776 89\n", + "start a node 775 45\n", + "start a node 774 30\n", + "start a node 773 11\n", + "start a node 772 9\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 773 19\n", + "start a node 772 18\n", + "start a node 772 1\n", + "start a node 774 15\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 773 10\n", + "start a node 772 7\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 775 44\n", + "start a node 774 6\n", + "start a node 773 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 38\n", + "start a node 773 22\n", + "start a node 772 10\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 6\n", + "start a node 770 5\n", + "start a node 770 1\n", + "start a node 772 12\n", + "start a node 771 9\n", + "start a node 770 7\n", + "start a node 770 2\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 773 16\n", + "start a node 776 74\n", + "start a node 775 52\n", + "start a node 774 22\n", + "start a node 773 14\n", + "start a node 772 8\n", + "start a node 771 2\n", + "start a node 771 6\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 773 8\n", + "start a node 772 7\n", + "start a node 772 1\n", + "start a node 774 30\n", + "start a node 773 29\n", + "start a node 772 1\n", + "start a node 772 28\n", + "start a node 773 1\n", + "start a node 775 22\n", + "start a node 774 18\n", + "start a node 773 13\n", + "start a node 772 8\n", + "start a node 772 5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 777 226\n", + "start a node 776 178\n", + "start a node 775 165\n", + "start a node 774 152\n", + "start a node 773 145\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 774 13\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 775 13\n", + "start a node 774 10\n", + "start a node 773 9\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 776 48\n", + "start a node 775 21\n", + "start a node 774 14\n", + "start a node 773 12\n", + "start a node 773 2\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 775 27\n", + "start a node 774 13\n", + "start a node 773 1\n", + "start a node 773 12\n", + "start a node 774 14\n", + "start a node 773 12\n", + "start a node 772 11\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 779 555\n", + "start a node 778 284\n", + "start a node 777 198\n", + "start a node 776 161\n", + "start a node 775 149\n", + "start a node 774 42\n", + "start a node 773 36\n", + "start a node 772 33\n", + "start a node 771 31\n", + "start a node 770 30\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 3\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 107\n", + "start a node 775 12\n", + "start a node 774 6\n", + "start a node 774 6\n", + "start a node 773 5\n", + "start a node 773 1\n", + "start a node 776 37\n", + "start a node 775 26\n", + "start a node 774 16\n", + "start a node 773 5\n", + "start a node 773 11\n", + "start a node 772 8\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 10\n", + "start a node 773 5\n", + "start a node 772 1\n", + "start a node 772 4\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 775 11\n", + "start a node 774 9\n", + "start a node 773 8\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 777 86\n", + "start a node 776 45\n", + "start a node 775 34\n", + "start a node 774 27\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 772 5\n", + "start a node 773 19\n", + "start a node 774 7\n", + "start a node 773 3\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 775 11\n", + "start a node 776 41\n", + "start a node 775 12\n", + "start a node 774 6\n", + "start a node 773 4\n", + "start a node 773 2\n", + "start a node 774 6\n", + "start a node 773 4\n", + "start a node 773 2\n", + "start a node 775 29\n", + "start a node 774 21\n", + "start a node 773 11\n", + "start a node 772 6\n", + "start a node 771 4\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 771 1\n", + "start a node 771 7\n", + "start a node 772 2\n", + "start a node 774 8\n", + "start a node 773 6\n", + "start a node 773 2\n", + "start a node 778 271\n", + "start a node 777 80\n", + "start a node 776 63\n", + "start a node 775 40\n", + "start a node 774 17\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 772 3\n", + "start a node 773 10\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 772 6\n", + "start a node 774 23\n", + "start a node 773 21\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 775 23\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 774 20\n", + "start a node 773 19\n", + "start a node 773 1\n", + "start a node 776 17\n", + "start a node 775 2\n", + "start a node 774 1\n", + "start a node 774 1\n", + "start a node 775 15\n", + "start a node 777 191\n", + "start a node 776 19\n", + "start a node 775 13\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 11\n", + "start a node 773 9\n", + "start a node 772 8\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 775 6\n", + "start a node 776 172\n", + "start a node 775 46\n", + "start a node 774 39\n", + "start a node 773 35\n", + "start a node 772 34\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 775 126\n", + "start a node 780 1585\n", + "start a node 779 772\n", + "start a node 778 565\n", + "start a node 777 541\n", + "start a node 776 105\n", + "start a node 775 80\n", + "start a node 774 68\n", + "start a node 773 64\n", + "start a node 772 59\n", + "start a node 771 12\n", + "start a node 770 8\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 771 47\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 12\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 775 25\n", + "start a node 774 13\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 774 12\n", + "start a node 773 8\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 776 436\n", + "start a node 777 24\n", + "start a node 776 15\n", + "start a node 775 9\n", + "start a node 774 8\n", + "start a node 774 1\n", + "start a node 775 6\n", + "start a node 774 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 776 9\n", + "start a node 775 5\n", + "start a node 774 2\n", + "start a node 774 3\n", + "start a node 775 4\n", + "start a node 778 207\n", + "start a node 777 149\n", + "start a node 776 46\n", + "start a node 775 40\n", + "start a node 774 13\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 774 27\n", + "start a node 773 23\n", + "start a node 772 22\n", + "start a node 771 21\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 775 6\n", + "start a node 776 103\n", + "start a node 775 35\n", + "start a node 774 15\n", + "start a node 773 9\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 20\n", + "start a node 775 68\n", + "start a node 774 54\n", + "start a node 773 23\n", + "start a node 772 13\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 9\n", + "start a node 772 10\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 773 31\n", + "start a node 772 30\n", + "start a node 772 1\n", + "start a node 774 14\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 771 5\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 777 58\n", + "start a node 776 36\n", + "start a node 775 7\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 773 2\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 775 29\n", + "start a node 774 26\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 776 22\n", + "start a node 775 15\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 774 12\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 779 813\n", + "start a node 778 556\n", + "start a node 777 366\n", + "start a node 776 239\n", + "start a node 775 132\n", + "start a node 774 90\n", + "start a node 773 36\n", + "start a node 772 24\n", + "start a node 771 20\n", + "start a node 770 1\n", + "start a node 770 19\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 772 12\n", + "start a node 771 10\n", + "start a node 770 9\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 773 54\n", + "start a node 772 44\n", + "start a node 771 28\n", + "start a node 770 19\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 768 2\n", + "start a node 769 15\n", + "start a node 768 13\n", + "start a node 767 12\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 770 9\n", + "start a node 771 16\n", + "start a node 772 10\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 7\n", + "start a node 774 42\n", + "start a node 773 29\n", + "start a node 772 19\n", + "start a node 771 11\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 770 8\n", + "start a node 771 8\n", + "start a node 770 6\n", + "start a node 770 2\n", + "start a node 772 10\n", + "start a node 771 3\n", + "start a node 771 7\n", + "start a node 770 5\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 773 13\n", + "start a node 772 12\n", + "start a node 772 1\n", + "start a node 775 107\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 772 3\n", + "start a node 774 95\n", + "start a node 776 127\n", + "start a node 775 55\n", + "start a node 774 37\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 33\n", + "start a node 774 18\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 773 10\n", + "start a node 772 5\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 775 72\n", + "start a node 774 29\n", + "start a node 773 16\n", + "start a node 772 9\n", + "start a node 771 8\n", + "start a node 771 1\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 773 13\n", + "start a node 772 10\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 8\n", + "start a node 772 3\n", + "start a node 774 43\n", + "start a node 773 36\n", + "start a node 772 35\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 777 190\n", + "start a node 776 163\n", + "start a node 775 77\n", + "start a node 774 11\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 773 5\n", + "start a node 774 66\n", + "start a node 773 62\n", + "start a node 772 60\n", + "start a node 771 57\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 773 4\n", + "start a node 775 86\n", + "start a node 776 27\n", + "start a node 775 10\n", + "start a node 774 9\n", + "start a node 774 1\n", + "start a node 775 17\n", + "start a node 774 11\n", + "start a node 773 9\n", + "start a node 773 2\n", + "start a node 774 6\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 778 257\n", + "start a node 777 209\n", + "start a node 776 165\n", + "start a node 775 36\n", + "start a node 774 6\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 774 30\n", + "start a node 773 25\n", + "start a node 772 22\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 775 129\n", + "start a node 776 44\n", + "start a node 775 28\n", + "start a node 774 13\n", + "start a node 773 8\n", + "start a node 772 7\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 15\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 773 9\n", + "start a node 772 1\n", + "start a node 772 8\n", + "start a node 775 16\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 14\n", + "start a node 777 48\n", + "start a node 776 34\n", + "start a node 775 26\n", + "start a node 774 24\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 8\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 773 2\n", + "start a node 774 3\n", + "start a node 776 14\n", + "start a node 775 8\n", + "start a node 774 3\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 774 3\n", + "start a node 782 9649\n", + "start a node 781 5875\n", + "start a node 780 2790\n", + "start a node 779 1642\n", + "start a node 778 1334\n", + "start a node 777 711\n", + "start a node 776 558\n", + "start a node 775 195\n", + "start a node 774 156\n", + "start a node 773 126\n", + "start a node 772 98\n", + "start a node 771 65\n", + "start a node 770 42\n", + "start a node 769 27\n", + "start a node 768 21\n", + "start a node 767 19\n", + "start a node 766 16\n", + "start a node 766 3\n", + "start a node 765 2\n", + "start a node 764 1\n", + "start a node 764 1\n", + "start a node 765 1\n", + "start a node 767 2\n", + "start a node 768 6\n", + "start a node 767 1\n", + "start a node 767 5\n", + "start a node 769 15\n", + "start a node 768 10\n", + "start a node 767 8\n", + "start a node 766 7\n", + "start a node 766 1\n", + "start a node 767 2\n", + "start a node 768 5\n", + "start a node 767 2\n", + "start a node 767 3\n", + "start a node 766 2\n", + "start a node 766 1\n", + "start a node 770 23\n", + "start a node 769 20\n", + "start a node 768 18\n", + "start a node 767 17\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 3\n", + "start a node 771 33\n", + "start a node 770 26\n", + "start a node 769 12\n", + "start a node 769 14\n", + "start a node 768 9\n", + "start a node 768 5\n", + "start a node 770 7\n", + "start a node 769 5\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 772 28\n", + "start a node 771 22\n", + "start a node 770 20\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 771 6\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 773 30\n", + "start a node 772 29\n", + "start a node 772 1\n", + "start a node 774 39\n", + "start a node 773 18\n", + "start a node 772 10\n", + "start a node 771 4\n", + "start a node 771 6\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 773 21\n", + "start a node 775 363\n", + "start a node 774 337\n", + "start a node 774 26\n", + "start a node 773 19\n", + "start a node 772 8\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 772 11\n", + "start a node 771 7\n", + "start a node 771 4\n", + "start a node 773 7\n", + "start a node 772 5\n", + "start a node 772 2\n", + "start a node 776 153\n", + "start a node 775 112\n", + "start a node 774 107\n", + "start a node 773 99\n", + "start a node 772 83\n", + "start a node 772 16\n", + "start a node 771 13\n", + "start a node 770 12\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 775 41\n", + "start a node 774 20\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 16\n", + "start a node 772 2\n", + "start a node 772 14\n", + "start a node 774 21\n", + "start a node 773 19\n", + "start a node 772 18\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 777 623\n", + "start a node 776 350\n", + "start a node 775 235\n", + "start a node 774 200\n", + "start a node 774 35\n", + "start a node 773 30\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 26\n", + "start a node 773 5\n", + "start a node 775 115\n", + "start a node 774 62\n", + "start a node 773 52\n", + "start a node 772 45\n", + "start a node 771 40\n", + "start a node 770 37\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 771 5\n", + "start a node 770 4\n", + "start a node 770 1\n", + "start a node 772 7\n", + "start a node 771 1\n", + "start a node 771 6\n", + "start a node 773 10\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 774 53\n", + "start a node 773 50\n", + "start a node 772 45\n", + "start a node 771 43\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 776 273\n", + "start a node 775 139\n", + "start a node 774 113\n", + "start a node 773 88\n", + "start a node 772 77\n", + "start a node 771 71\n", + "start a node 770 47\n", + "start a node 769 46\n", + "start a node 769 1\n", + "start a node 770 24\n", + "start a node 769 20\n", + "start a node 768 8\n", + "start a node 767 4\n", + "start a node 767 4\n", + "start a node 768 12\n", + "start a node 769 4\n", + "start a node 771 6\n", + "start a node 772 11\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 771 7\n", + "start a node 770 5\n", + "start a node 770 2\n", + "start a node 773 25\n", + "start a node 772 20\n", + "start a node 771 18\n", + "start a node 770 17\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 5\n", + "start a node 774 26\n", + "start a node 773 19\n", + "start a node 772 17\n", + "start a node 771 16\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 7\n", + "start a node 772 5\n", + "start a node 772 2\n", + "start a node 775 134\n", + "start a node 778 308\n", + "start a node 777 287\n", + "start a node 776 283\n", + "start a node 776 4\n", + "start a node 777 21\n", + "start a node 776 12\n", + "start a node 775 6\n", + "start a node 775 6\n", + "start a node 774 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 776 9\n", + "start a node 775 4\n", + "start a node 774 1\n", + "start a node 774 3\n", + "start a node 775 5\n", + "start a node 774 3\n", + "start a node 774 2\n", + "start a node 779 1148\n", + "start a node 778 407\n", + "start a node 777 71\n", + "start a node 776 57\n", + "start a node 775 50\n", + "start a node 774 39\n", + "start a node 773 38\n", + "start a node 773 1\n", + "start a node 774 11\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 775 7\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 774 5\n", + "start a node 773 1\n", + "start a node 773 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 776 14\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 3\n", + "start a node 775 8\n", + "start a node 774 7\n", + "start a node 774 1\n", + "start a node 777 336\n", + "start a node 776 192\n", + "start a node 775 149\n", + "start a node 774 136\n", + "start a node 773 128\n", + "start a node 772 105\n", + "start a node 771 96\n", + "start a node 771 9\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 770 5\n", + "start a node 772 23\n", + "start a node 771 21\n", + "start a node 770 11\n", + "start a node 769 7\n", + "start a node 768 2\n", + "start a node 768 5\n", + "start a node 769 4\n", + "start a node 770 10\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 773 8\n", + "start a node 772 7\n", + "start a node 772 1\n", + "start a node 774 13\n", + "start a node 773 12\n", + "start a node 773 1\n", + "start a node 775 43\n", + "start a node 774 12\n", + "start a node 773 8\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 774 31\n", + "start a node 773 28\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 776 144\n", + "start a node 775 31\n", + "start a node 774 10\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 774 21\n", + "start a node 773 20\n", + "start a node 773 1\n", + "start a node 775 113\n", + "start a node 774 38\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 32\n", + "start a node 772 28\n", + "start a node 771 22\n", + "start a node 770 21\n", + "start a node 770 1\n", + "start a node 771 6\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 770 3\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 774 75\n", + "start a node 778 741\n", + "start a node 777 45\n", + "start a node 776 29\n", + "start a node 775 23\n", + "start a node 774 21\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 776 16\n", + "start a node 775 12\n", + "start a node 774 11\n", + "start a node 774 1\n", + "start a node 775 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 777 696\n", + "start a node 780 3085\n", + "start a node 779 2895\n", + "start a node 779 190\n", + "start a node 778 75\n", + "start a node 777 58\n", + "start a node 776 47\n", + "start a node 775 44\n", + "start a node 774 42\n", + "start a node 774 2\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 774 1\n", + "start a node 776 11\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 774 3\n", + "start a node 775 5\n", + "start a node 774 4\n", + "start a node 774 1\n", + "start a node 777 17\n", + "start a node 776 13\n", + "start a node 776 4\n", + "start a node 775 3\n", + "start a node 775 1\n", + "start a node 778 115\n", + "start a node 777 55\n", + "start a node 776 51\n", + "start a node 775 2\n", + "start a node 774 1\n", + "start a node 774 1\n", + "start a node 775 49\n", + "start a node 774 48\n", + "start a node 774 1\n", + "start a node 776 4\n", + "start a node 775 2\n", + "start a node 775 2\n", + "start a node 774 1\n", + "start a node 774 1\n", + "start a node 777 60\n", + "start a node 776 13\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 775 6\n", + "start a node 776 47\n", + "start a node 775 2\n", + "start a node 775 45\n", + "start a node 781 3774\n", + "start a node 780 2561\n", + "start a node 779 2191\n", + "start a node 778 2091\n", + "start a node 777 2014\n", + "start a node 777 77\n", + "start a node 776 46\n", + "start a node 775 12\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 775 34\n", + "start a node 774 29\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 776 31\n", + "start a node 775 16\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 12\n", + "start a node 775 15\n", + "start a node 774 11\n", + "start a node 773 10\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 773 2\n", + "start a node 778 100\n", + "start a node 777 61\n", + "start a node 776 23\n", + "start a node 775 14\n", + "start a node 775 9\n", + "start a node 774 6\n", + "start a node 774 3\n", + "start a node 776 38\n", + "start a node 775 28\n", + "start a node 774 26\n", + "start a node 773 25\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 10\n", + "start a node 774 6\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 777 39\n", + "start a node 776 6\n", + "start a node 775 2\n", + "start a node 775 4\n", + "start a node 776 33\n", + "start a node 779 370\n", + "start a node 778 226\n", + "start a node 777 87\n", + "start a node 776 66\n", + "start a node 775 59\n", + "start a node 774 55\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 773 2\n", + "start a node 776 21\n", + "start a node 775 13\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 774 9\n", + "start a node 773 8\n", + "start a node 773 1\n", + "start a node 775 8\n", + "start a node 774 1\n", + "start a node 774 7\n", + "start a node 777 139\n", + "start a node 776 60\n", + "start a node 775 26\n", + "start a node 774 6\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 774 20\n", + "start a node 773 1\n", + "start a node 773 19\n", + "start a node 775 34\n", + "start a node 774 13\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 772 3\n", + "start a node 774 21\n", + "start a node 773 17\n", + "start a node 773 4\n", + "start a node 776 79\n", + "start a node 778 144\n", + "start a node 777 125\n", + "start a node 776 104\n", + "start a node 776 21\n", + "start a node 775 8\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 775 13\n", + "start a node 774 12\n", + "start a node 774 1\n", + "start a node 777 19\n", + "start a node 776 10\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 774 1\n", + "start a node 775 7\n", + "start a node 776 9\n", + "start a node 775 4\n", + "start a node 774 3\n", + "start a node 774 1\n", + "start a node 775 5\n", + "start a node 774 3\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 780 1213\n", + "start a node 779 681\n", + "start a node 778 286\n", + "start a node 777 248\n", + "start a node 776 242\n", + "start a node 775 233\n", + "start a node 775 9\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 776 6\n", + "start a node 775 3\n", + "start a node 774 1\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 3\n", + "start a node 777 38\n", + "start a node 776 25\n", + "start a node 775 9\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 775 16\n", + "start a node 774 15\n", + "start a node 774 1\n", + "start a node 776 13\n", + "start a node 775 12\n", + "start a node 775 1\n", + "start a node 778 395\n", + "start a node 777 328\n", + "start a node 776 83\n", + "start a node 775 31\n", + "start a node 774 11\n", + "start a node 773 7\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 774 20\n", + "start a node 773 16\n", + "start a node 773 4\n", + "start a node 775 52\n", + "start a node 774 15\n", + "start a node 773 8\n", + "start a node 772 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 7\n", + "start a node 774 37\n", + "start a node 773 34\n", + "start a node 772 32\n", + "start a node 771 29\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 3\n", + "start a node 776 245\n", + "start a node 777 67\n", + "start a node 776 54\n", + "start a node 775 43\n", + "start a node 775 11\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 774 6\n", + "start a node 773 4\n", + "start a node 773 2\n", + "start a node 776 13\n", + "start a node 775 6\n", + "start a node 774 4\n", + "start a node 774 2\n", + "start a node 775 7\n", + "start a node 779 532\n", + "start a node 778 460\n", + "start a node 777 427\n", + "start a node 777 33\n", + "start a node 776 17\n", + "start a node 775 10\n", + "start a node 774 9\n", + "start a node 774 1\n", + "start a node 775 7\n", + "start a node 774 4\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 776 16\n", + "start a node 775 4\n", + "start a node 774 1\n", + "start a node 774 3\n", + "start a node 775 12\n", + "start a node 774 10\n", + "start a node 773 8\n", + "start a node 773 2\n", + "start a node 774 2\n", + "start a node 778 72\n", + "start a node 777 31\n", + "start a node 776 19\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 775 12\n", + "start a node 774 1\n", + "start a node 774 11\n", + "start a node 775 7\n", + "start a node 774 2\n", + "start a node 774 5\n", + "start a node 776 12\n", + "start a node 775 8\n", + "start a node 774 2\n", + "start a node 774 6\n", + "start a node 775 4\n", + "start a node 774 1\n", + "start a node 774 3\n", + "start a node 777 41\n", + "start a node 776 21\n", + "start a node 775 19\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 774 16\n", + "start a node 775 2\n", + "start a node 774 1\n", + "start a node 774 1\n", + "start a node 776 20\n", + "start a node 775 16\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 12\n", + "start a node 775 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 783 26413\n", + "start a node 782 15142\n", + "start a node 781 11780\n", + "start a node 780 6873\n", + "start a node 779 3386\n", + "start a node 778 2344\n", + "start a node 777 1339\n", + "start a node 776 1178\n", + "start a node 775 1089\n", + "start a node 774 789\n", + "start a node 773 706\n", + "start a node 772 658\n", + "start a node 772 48\n", + "start a node 771 30\n", + "start a node 770 12\n", + "start a node 769 7\n", + "start a node 769 5\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 3\n", + "start a node 770 18\n", + "start a node 769 16\n", + "start a node 768 15\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 771 18\n", + "start a node 770 6\n", + "start a node 769 2\n", + "start a node 769 4\n", + "start a node 770 12\n", + "start a node 769 11\n", + "start a node 769 1\n", + "start a node 773 83\n", + "start a node 772 61\n", + "start a node 771 54\n", + "start a node 770 31\n", + "start a node 769 23\n", + "start a node 768 18\n", + "start a node 767 15\n", + "start a node 767 3\n", + "start a node 768 5\n", + "start a node 767 1\n", + "start a node 767 4\n", + "start a node 769 8\n", + "start a node 768 6\n", + "start a node 768 2\n", + "start a node 770 23\n", + "start a node 771 7\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 772 22\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 771 15\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 770 11\n", + "start a node 774 300\n", + "start a node 773 217\n", + "start a node 772 166\n", + "start a node 771 61\n", + "start a node 770 49\n", + "start a node 769 42\n", + "start a node 768 36\n", + "start a node 767 33\n", + "start a node 766 30\n", + "start a node 766 3\n", + "start a node 765 2\n", + "start a node 764 1\n", + "start a node 764 1\n", + "start a node 765 1\n", + "start a node 767 3\n", + "start a node 766 2\n", + "start a node 765 1\n", + "start a node 765 1\n", + "start a node 766 1\n", + "start a node 768 6\n", + "start a node 769 7\n", + "start a node 768 5\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 770 12\n", + "start a node 769 1\n", + "start a node 769 11\n", + "start a node 771 105\n", + "start a node 772 51\n", + "start a node 771 34\n", + "start a node 770 25\n", + "start a node 769 24\n", + "start a node 769 1\n", + "start a node 770 9\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 7\n", + "start a node 771 17\n", + "start a node 770 14\n", + "start a node 770 3\n", + "start a node 773 83\n", + "start a node 772 25\n", + "start a node 771 17\n", + "start a node 770 15\n", + "start a node 770 2\n", + "start a node 771 8\n", + "start a node 770 5\n", + "start a node 769 4\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 772 58\n", + "start a node 775 89\n", + "start a node 774 34\n", + "start a node 773 9\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 773 25\n", + "start a node 772 22\n", + "start a node 771 21\n", + "start a node 770 20\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 55\n", + "start a node 773 43\n", + "start a node 772 42\n", + "start a node 771 41\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 12\n", + "start a node 772 10\n", + "start a node 771 9\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 776 161\n", + "start a node 775 132\n", + "start a node 774 41\n", + "start a node 773 35\n", + "start a node 772 18\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 770 2\n", + "start a node 771 13\n", + "start a node 770 10\n", + "start a node 769 9\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 772 17\n", + "start a node 771 16\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 774 91\n", + "start a node 773 88\n", + "start a node 772 71\n", + "start a node 772 17\n", + "start a node 771 7\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 771 10\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 775 29\n", + "start a node 774 21\n", + "start a node 773 19\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 777 1005\n", + "start a node 776 887\n", + "start a node 775 339\n", + "start a node 774 246\n", + "start a node 773 116\n", + "start a node 772 70\n", + "start a node 771 48\n", + "start a node 770 32\n", + "start a node 769 12\n", + "start a node 768 9\n", + "start a node 767 8\n", + "start a node 766 7\n", + "start a node 766 1\n", + "start a node 767 1\n", + "start a node 768 3\n", + "start a node 769 20\n", + "start a node 768 18\n", + "start a node 767 17\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 770 16\n", + "start a node 769 8\n", + "start a node 768 4\n", + "start a node 767 2\n", + "start a node 767 2\n", + "start a node 768 4\n", + "start a node 767 2\n", + "start a node 767 2\n", + "start a node 769 8\n", + "start a node 768 6\n", + "start a node 768 2\n", + "start a node 771 22\n", + "start a node 770 20\n", + "start a node 769 18\n", + "start a node 768 17\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 2\n", + "start a node 772 46\n", + "start a node 771 35\n", + "start a node 770 26\n", + "start a node 769 17\n", + "start a node 768 16\n", + "start a node 768 1\n", + "start a node 769 9\n", + "start a node 768 2\n", + "start a node 768 7\n", + "start a node 770 9\n", + "start a node 769 7\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 771 11\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 770 8\n", + "start a node 773 130\n", + "start a node 772 106\n", + "start a node 771 81\n", + "start a node 770 76\n", + "start a node 769 74\n", + "start a node 768 73\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 771 25\n", + "start a node 770 14\n", + "start a node 769 11\n", + "start a node 768 10\n", + "start a node 768 1\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 768 1\n", + "start a node 770 11\n", + "start a node 769 8\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 1\n", + "start a node 772 24\n", + "start a node 771 20\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 1\n", + "start a node 770 17\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 774 93\n", + "start a node 773 59\n", + "start a node 772 46\n", + "start a node 771 36\n", + "start a node 770 7\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 768 2\n", + "start a node 769 3\n", + "start a node 770 29\n", + "start a node 769 28\n", + "start a node 769 1\n", + "start a node 771 10\n", + "start a node 770 9\n", + "start a node 770 1\n", + "start a node 772 13\n", + "start a node 771 9\n", + "start a node 770 5\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 773 34\n", + "start a node 772 33\n", + "start a node 772 1\n", + "start a node 775 548\n", + "start a node 774 490\n", + "start a node 774 58\n", + "start a node 773 49\n", + "start a node 772 44\n", + "start a node 771 17\n", + "start a node 770 12\n", + "start a node 769 8\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 768 1\n", + "start a node 768 2\n", + "start a node 769 2\n", + "start a node 771 27\n", + "start a node 770 22\n", + "start a node 769 18\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 768 2\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 769 2\n", + "start a node 772 5\n", + "start a node 771 1\n", + "start a node 771 4\n", + "start a node 773 9\n", + "start a node 772 4\n", + "start a node 772 5\n", + "start a node 776 118\n", + "start a node 775 42\n", + "start a node 774 27\n", + "start a node 773 19\n", + "start a node 772 17\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 8\n", + "start a node 772 6\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 15\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 775 76\n", + "start a node 774 72\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 773 24\n", + "start a node 772 7\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 771 3\n", + "start a node 772 17\n", + "start a node 773 48\n", + "start a node 772 41\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 771 2\n", + "start a node 774 4\n", + "start a node 778 1042\n", + "start a node 777 865\n", + "start a node 776 793\n", + "start a node 775 750\n", + "start a node 774 733\n", + "start a node 774 17\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 773 12\n", + "start a node 772 10\n", + "start a node 771 9\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 43\n", + "start a node 774 23\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 773 15\n", + "start a node 772 9\n", + "start a node 771 5\n", + "start a node 770 4\n", + "start a node 770 1\n", + "start a node 771 4\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 774 20\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 18\n", + "start a node 772 16\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 776 72\n", + "start a node 775 33\n", + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 772 2\n", + "start a node 772 4\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 774 21\n", + "start a node 773 17\n", + "start a node 772 12\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 771 2\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 39\n", + "start a node 774 29\n", + "start a node 773 24\n", + "start a node 772 16\n", + "start a node 771 10\n", + "start a node 771 6\n", + "start a node 770 4\n", + "start a node 769 1\n", + "start a node 769 3\n", + "start a node 770 2\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 774 10\n", + "start a node 773 9\n", + "start a node 773 1\n", + "start a node 777 177\n", + "start a node 776 139\n", + "start a node 775 89\n", + "start a node 774 18\n", + "start a node 773 12\n", + "start a node 772 6\n", + "start a node 772 6\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 4\n", + "start a node 773 6\n", + "start a node 772 5\n", + "start a node 772 1\n", + "start a node 774 71\n", + "start a node 773 65\n", + "start a node 772 40\n", + "start a node 771 38\n", + "start a node 770 14\n", + "start a node 769 3\n", + "start a node 769 11\n", + "start a node 768 7\n", + "start a node 768 4\n", + "start a node 767 2\n", + "start a node 767 2\n", + "start a node 770 24\n", + "start a node 771 2\n", + "start a node 772 25\n", + "start a node 771 19\n", + "start a node 770 7\n", + "start a node 769 5\n", + "start a node 768 3\n", + "start a node 767 2\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 12\n", + "start a node 769 2\n", + "start a node 769 10\n", + "start a node 771 6\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 775 50\n", + "start a node 774 9\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 41\n", + "start a node 773 25\n", + "start a node 773 16\n", + "start a node 772 8\n", + "start a node 771 6\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 776 38\n", + "start a node 775 32\n", + "start a node 774 25\n", + "start a node 774 7\n", + "start a node 773 5\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 775 6\n", + "start a node 779 3487\n", + "start a node 778 3043\n", + "start a node 777 1237\n", + "start a node 776 930\n", + "start a node 775 755\n", + "start a node 774 678\n", + "start a node 773 643\n", + "start a node 772 620\n", + "start a node 772 23\n", + "start a node 771 21\n", + "start a node 770 18\n", + "start a node 769 17\n", + "start a node 769 1\n", + "start a node 770 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 773 35\n", + "start a node 772 21\n", + "start a node 771 14\n", + "start a node 771 7\n", + "start a node 770 4\n", + "start a node 770 3\n", + "start a node 772 14\n", + "start a node 771 11\n", + "start a node 770 2\n", + "start a node 770 9\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 7\n", + "start a node 771 3\n", + "start a node 774 77\n", + "start a node 773 44\n", + "start a node 772 31\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 27\n", + "start a node 770 26\n", + "start a node 770 1\n", + "start a node 772 13\n", + "start a node 771 11\n", + "start a node 770 10\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 773 33\n", + "start a node 772 19\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 769 1\n", + "start a node 769 2\n", + "start a node 770 2\n", + "start a node 771 14\n", + "start a node 770 5\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 769 3\n", + "start a node 770 9\n", + "start a node 769 8\n", + "start a node 769 1\n", + "start a node 772 14\n", + "start a node 771 12\n", + "start a node 771 2\n", + "start a node 775 175\n", + "start a node 774 156\n", + "start a node 773 122\n", + "start a node 772 115\n", + "start a node 771 99\n", + "start a node 770 89\n", + "start a node 769 85\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 770 10\n", + "start a node 769 6\n", + "start a node 768 5\n", + "start a node 768 1\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 768 2\n", + "start a node 771 16\n", + "start a node 770 9\n", + "start a node 769 6\n", + "start a node 769 3\n", + "start a node 770 7\n", + "start a node 769 1\n", + "start a node 769 6\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 771 2\n", + "start a node 773 34\n", + "start a node 772 19\n", + "start a node 771 10\n", + "start a node 770 7\n", + "start a node 770 3\n", + "start a node 769 2\n", + "start a node 769 1\n", + "start a node 771 9\n", + "start a node 770 4\n", + "start a node 770 5\n", + "start a node 769 2\n", + "start a node 769 3\n", + "start a node 772 15\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 770 2\n", + "start a node 771 11\n", + "start a node 774 19\n", + "start a node 773 13\n", + "start a node 772 12\n", + "start a node 772 1\n", + "start a node 773 6\n", + "start a node 776 307\n", + "start a node 775 259\n", + "start a node 774 251\n", + "start a node 774 8\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 775 48\n", + "start a node 774 31\n", + "start a node 773 23\n", + "start a node 772 19\n", + "start a node 771 1\n", + "start a node 771 18\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 773 8\n", + "start a node 772 2\n", + "start a node 772 6\n", + "start a node 774 17\n", + "start a node 773 9\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 777 1806\n", + "start a node 776 1531\n", + "start a node 775 1421\n", + "start a node 774 1349\n", + "start a node 774 72\n", + "start a node 773 25\n", + "start a node 772 16\n", + "start a node 771 13\n", + "start a node 770 8\n", + "start a node 769 7\n", + "start a node 769 1\n", + "start a node 770 5\n", + "start a node 771 3\n", + "start a node 772 9\n", + "start a node 771 5\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 773 47\n", + "start a node 772 33\n", + "start a node 771 20\n", + "start a node 770 9\n", + "start a node 769 6\n", + "start a node 769 3\n", + "start a node 770 11\n", + "start a node 769 3\n", + "start a node 769 8\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 6\n", + "start a node 771 13\n", + "start a node 770 11\n", + "start a node 770 2\n", + "start a node 772 14\n", + "start a node 771 9\n", + "start a node 770 4\n", + "start a node 770 5\n", + "start a node 769 4\n", + "start a node 769 1\n", + "start a node 771 5\n", + "start a node 770 4\n", + "start a node 770 1\n", + "start a node 775 110\n", + "start a node 774 90\n", + "start a node 773 77\n", + "start a node 772 74\n", + "start a node 771 71\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 772 3\n", + "start a node 773 13\n", + "start a node 772 10\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 774 20\n", + "start a node 773 16\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 776 275\n", + "start a node 775 212\n", + "start a node 774 205\n", + "start a node 773 189\n", + "start a node 773 16\n", + "start a node 772 12\n", + "start a node 771 5\n", + "start a node 770 2\n", + "start a node 770 3\n", + "start a node 771 7\n", + "start a node 770 5\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 4\n", + "start a node 774 7\n", + "start a node 773 6\n", + "start a node 773 1\n", + "start a node 775 63\n", + "start a node 774 43\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 772 2\n", + "start a node 773 37\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 772 33\n", + "start a node 771 32\n", + "start a node 771 1\n", + "start a node 774 20\n", + "start a node 773 18\n", + "start a node 773 2\n", + "start a node 778 444\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 777 327\n", + "start a node 776 291\n", + "start a node 775 160\n", + "start a node 774 48\n", + "start a node 773 41\n", + "start a node 772 35\n", + "start a node 771 30\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 770 2\n", + "start a node 772 6\n", + "start a node 771 4\n", + "start a node 771 2\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 112\n", + "start a node 773 84\n", + "start a node 772 76\n", + "start a node 771 72\n", + "start a node 770 31\n", + "start a node 769 15\n", + "start a node 769 16\n", + "start a node 768 9\n", + "start a node 767 1\n", + "start a node 767 8\n", + "start a node 768 7\n", + "start a node 770 41\n", + "start a node 769 40\n", + "start a node 769 1\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 772 8\n", + "start a node 771 3\n", + "start a node 771 5\n", + "start a node 773 28\n", + "start a node 772 22\n", + "start a node 771 5\n", + "start a node 770 3\n", + "start a node 770 2\n", + "start a node 771 17\n", + "start a node 772 6\n", + "start a node 775 131\n", + "start a node 774 17\n", + "start a node 773 5\n", + "start a node 773 12\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 3\n", + "start a node 772 6\n", + "start a node 771 5\n", + "start a node 771 1\n", + "start a node 774 114\n", + "start a node 773 99\n", + "start a node 773 15\n", + "start a node 772 3\n", + "start a node 772 12\n", + "start a node 771 3\n", + "start a node 771 9\n", + "start a node 770 1\n", + "start a node 770 8\n", + "start a node 776 36\n", + "start a node 775 32\n", + "start a node 774 1\n", + "start a node 774 31\n", + "start a node 775 4\n", + "start a node 774 3\n", + "start a node 774 1\n", + "start a node 777 117\n", + "start a node 776 88\n", + "start a node 775 50\n", + "start a node 774 40\n", + "start a node 773 36\n", + "start a node 772 28\n", + "start a node 772 8\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 4\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 774 10\n", + "start a node 773 6\n", + "start a node 773 4\n", + "start a node 775 38\n", + "start a node 774 33\n", + "start a node 773 19\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 772 16\n", + "start a node 773 14\n", + "start a node 772 7\n", + "start a node 771 3\n", + "start a node 771 4\n", + "start a node 772 7\n", + "start a node 771 5\n", + "start a node 771 2\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 776 29\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 775 22\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 773 3\n", + "start a node 774 15\n", + "start a node 780 4907\n", + "start a node 779 2407\n", + "start a node 778 1847\n", + "start a node 777 1302\n", + "start a node 776 1257\n", + "start a node 775 1211\n", + "start a node 775 46\n", + "start a node 774 34\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 29\n", + "start a node 772 24\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 2\n", + "start a node 774 12\n", + "start a node 773 10\n", + "start a node 773 2\n", + "start a node 776 45\n", + "start a node 775 24\n", + "start a node 774 11\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 774 13\n", + "start a node 775 21\n", + "start a node 774 14\n", + "start a node 773 13\n", + "start a node 773 1\n", + "start a node 774 7\n", + "start a node 773 4\n", + "start a node 773 3\n", + "start a node 777 545\n", + "start a node 776 463\n", + "start a node 775 420\n", + "start a node 774 35\n", + "start a node 773 15\n", + "start a node 772 6\n", + "start a node 771 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 9\n", + "start a node 771 8\n", + "start a node 771 1\n", + "start a node 773 20\n", + "start a node 772 17\n", + "start a node 771 1\n", + "start a node 771 16\n", + "start a node 772 3\n", + "start a node 774 385\n", + "start a node 775 43\n", + "start a node 774 29\n", + "start a node 773 8\n", + "start a node 772 2\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 773 21\n", + "start a node 772 20\n", + "start a node 771 19\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 774 14\n", + "start a node 773 12\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 776 82\n", + "start a node 775 64\n", + "start a node 774 62\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 18\n", + "start a node 774 1\n", + "start a node 774 17\n", + "start a node 778 560\n", + "start a node 777 375\n", + "start a node 776 318\n", + "start a node 775 293\n", + "start a node 774 273\n", + "start a node 774 20\n", + "start a node 773 6\n", + "start a node 772 1\n", + "start a node 772 5\n", + "start a node 773 14\n", + "start a node 775 25\n", + "start a node 774 12\n", + "start a node 773 8\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 772 2\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 774 13\n", + "start a node 776 57\n", + "start a node 775 23\n", + "start a node 774 15\n", + "start a node 773 14\n", + "start a node 773 1\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 775 34\n", + "start a node 774 24\n", + "start a node 773 21\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 16\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 774 10\n", + "start a node 773 7\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 777 185\n", + "start a node 776 36\n", + "start a node 775 25\n", + "start a node 774 23\n", + "start a node 774 2\n", + "start a node 775 11\n", + "start a node 774 3\n", + "start a node 774 8\n", + "start a node 776 149\n", + "start a node 775 113\n", + "start a node 774 54\n", + "start a node 773 50\n", + "start a node 772 42\n", + "start a node 772 8\n", + "start a node 771 6\n", + "start a node 771 2\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 774 59\n", + "start a node 773 4\n", + "start a node 773 55\n", + "start a node 772 17\n", + "start a node 771 6\n", + "start a node 770 2\n", + "start a node 770 4\n", + "start a node 771 11\n", + "start a node 770 10\n", + "start a node 770 1\n", + "start a node 772 38\n", + "start a node 775 36\n", + "start a node 774 15\n", + "start a node 773 10\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 774 21\n", + "start a node 773 18\n", + "start a node 772 17\n", + "start a node 771 1\n", + "start a node 771 16\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 779 2500\n", + "start a node 778 2235\n", + "start a node 777 2156\n", + "start a node 777 79\n", + "start a node 776 11\n", + "start a node 775 6\n", + "start a node 774 2\n", + "start a node 774 4\n", + "start a node 775 5\n", + "start a node 776 68\n", + "start a node 775 64\n", + "start a node 774 12\n", + "start a node 773 7\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 774 52\n", + "start a node 775 4\n", + "start a node 778 265\n", + "start a node 777 94\n", + "start a node 776 48\n", + "start a node 775 25\n", + "start a node 774 10\n", + "start a node 773 8\n", + "start a node 772 6\n", + "start a node 772 2\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 15\n", + "start a node 773 9\n", + "start a node 772 7\n", + "start a node 772 2\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 775 23\n", + "start a node 774 21\n", + "start a node 773 19\n", + "start a node 772 18\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 2\n", + "start a node 776 46\n", + "start a node 775 12\n", + "start a node 774 10\n", + "start a node 773 9\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 775 34\n", + "start a node 774 29\n", + "start a node 773 24\n", + "start a node 772 21\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 5\n", + "start a node 772 1\n", + "start a node 772 4\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 777 171\n", + "start a node 776 48\n", + "start a node 775 37\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 32\n", + "start a node 775 11\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 774 6\n", + "start a node 776 123\n", + "start a node 775 88\n", + "start a node 774 15\n", + "start a node 773 12\n", + "start a node 773 3\n", + "start a node 774 73\n", + "start a node 773 68\n", + "start a node 772 48\n", + "start a node 772 20\n", + "start a node 771 17\n", + "start a node 770 1\n", + "start a node 770 16\n", + "start a node 771 3\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 775 35\n", + "start a node 774 20\n", + "start a node 773 18\n", + "start a node 772 16\n", + "start a node 771 1\n", + "start a node 771 15\n", + "start a node 772 2\n", + "start a node 773 2\n", + "start a node 774 15\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 11\n", + "start a node 772 10\n", + "start a node 771 1\n", + "start a node 771 9\n", + "start a node 772 1\n", + "start a node 781 3362\n", + "start a node 780 1995\n", + "start a node 779 1270\n", + "start a node 778 1084\n", + "start a node 777 854\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 776 322\n", + "start a node 775 86\n", + "start a node 774 49\n", + "start a node 773 44\n", + "start a node 772 41\n", + "start a node 771 22\n", + "start a node 770 17\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 769 2\n", + "start a node 771 19\n", + "start a node 770 17\n", + "start a node 769 4\n", + "start a node 768 2\n", + "start a node 768 2\n", + "start a node 769 13\n", + "start a node 770 2\n", + "start a node 772 3\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 774 37\n", + "start a node 773 24\n", + "start a node 772 21\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 19\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 13\n", + "start a node 772 12\n", + "start a node 772 1\n", + "start a node 775 236\n", + "start a node 774 213\n", + "start a node 773 204\n", + "start a node 772 162\n", + "start a node 772 42\n", + "start a node 771 13\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 770 9\n", + "start a node 769 1\n", + "start a node 769 8\n", + "start a node 771 29\n", + "start a node 770 24\n", + "start a node 770 5\n", + "start a node 769 2\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 768 1\n", + "start a node 773 9\n", + "start a node 772 8\n", + "start a node 772 1\n", + "start a node 774 23\n", + "start a node 773 11\n", + "start a node 773 12\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 772 6\n", + "start a node 776 532\n", + "start a node 777 230\n", + "start a node 776 156\n", + "start a node 775 119\n", + "start a node 774 98\n", + "start a node 773 91\n", + "start a node 772 83\n", + "start a node 771 66\n", + "start a node 771 17\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 770 13\n", + "start a node 769 12\n", + "start a node 769 1\n", + "start a node 772 8\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 774 21\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 11\n", + "start a node 772 10\n", + "start a node 772 1\n", + "start a node 775 37\n", + "start a node 774 19\n", + "start a node 773 10\n", + "start a node 772 7\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 9\n", + "start a node 774 18\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 13\n", + "start a node 772 12\n", + "start a node 772 1\n", + "start a node 776 74\n", + "start a node 775 68\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 3\n", + "start a node 774 63\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 773 57\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 778 186\n", + "start a node 777 86\n", + "start a node 776 47\n", + "start a node 775 17\n", + "start a node 774 7\n", + "start a node 773 5\n", + "start a node 773 2\n", + "start a node 774 10\n", + "start a node 773 8\n", + "start a node 773 2\n", + "start a node 775 30\n", + "start a node 774 22\n", + "start a node 773 15\n", + "start a node 772 14\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 774 8\n", + "start a node 773 7\n", + "start a node 773 1\n", + "start a node 776 39\n", + "start a node 775 33\n", + "start a node 774 16\n", + "start a node 773 13\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 772 9\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 774 17\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 777 100\n", + "start a node 776 73\n", + "start a node 775 51\n", + "start a node 774 40\n", + "start a node 773 39\n", + "start a node 773 1\n", + "start a node 774 11\n", + "start a node 773 10\n", + "start a node 773 1\n", + "start a node 775 22\n", + "start a node 776 27\n", + "start a node 775 5\n", + "start a node 774 1\n", + "start a node 774 4\n", + "start a node 775 22\n", + "start a node 774 11\n", + "start a node 773 10\n", + "start a node 773 1\n", + "start a node 774 11\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 9\n", + "start a node 779 725\n", + "start a node 778 307\n", + "start a node 777 211\n", + "start a node 776 168\n", + "start a node 775 147\n", + "start a node 774 136\n", + "start a node 773 132\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 130\n", + "start a node 771 128\n", + "start a node 771 2\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 11\n", + "start a node 773 8\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 775 21\n", + "start a node 774 16\n", + "start a node 773 15\n", + "start a node 773 1\n", + "start a node 774 5\n", + "start a node 773 4\n", + "start a node 773 1\n", + "start a node 776 43\n", + "start a node 775 30\n", + "start a node 774 14\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 8\n", + "start a node 774 16\n", + "start a node 773 2\n", + "start a node 773 14\n", + "start a node 775 13\n", + "start a node 774 11\n", + "start a node 774 2\n", + "start a node 777 96\n", + "start a node 776 48\n", + "start a node 775 37\n", + "start a node 774 30\n", + "start a node 773 7\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 772 3\n", + "start a node 773 23\n", + "start a node 774 7\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 775 11\n", + "start a node 774 10\n", + "start a node 774 1\n", + "start a node 776 48\n", + "start a node 775 19\n", + "start a node 774 12\n", + "start a node 773 8\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 7\n", + "start a node 775 29\n", + "start a node 774 27\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 778 418\n", + "start a node 777 133\n", + "start a node 776 71\n", + "start a node 775 58\n", + "start a node 774 31\n", + "start a node 773 15\n", + "start a node 772 8\n", + "start a node 771 5\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 772 7\n", + "start a node 773 16\n", + "start a node 772 12\n", + "start a node 771 11\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 774 27\n", + "start a node 775 13\n", + "start a node 774 5\n", + "start a node 774 8\n", + "start a node 776 62\n", + "start a node 775 15\n", + "start a node 774 12\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 775 47\n", + "start a node 774 32\n", + "start a node 773 30\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 15\n", + "start a node 773 7\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 772 5\n", + "start a node 771 2\n", + "start a node 771 3\n", + "start a node 777 285\n", + "start a node 776 244\n", + "start a node 775 182\n", + "start a node 774 178\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 775 62\n", + "start a node 774 35\n", + "start a node 773 24\n", + "start a node 772 18\n", + "start a node 771 15\n", + "start a node 770 1\n", + "start a node 770 14\n", + "start a node 771 3\n", + "start a node 772 6\n", + "start a node 771 4\n", + "start a node 771 2\n", + "start a node 773 11\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 772 5\n", + "start a node 774 27\n", + "start a node 773 24\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 776 41\n", + "start a node 775 29\n", + "start a node 774 13\n", + "start a node 773 7\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 16\n", + "start a node 773 14\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 775 12\n", + "start a node 774 6\n", + "start a node 773 5\n", + "start a node 773 1\n", + "start a node 774 6\n", + "start a node 773 5\n", + "start a node 773 1\n", + "start a node 780 1367\n", + "start a node 779 358\n", + "start a node 778 123\n", + "start a node 777 50\n", + "start a node 776 33\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 775 26\n", + "start a node 774 25\n", + "start a node 774 1\n", + "start a node 776 17\n", + "start a node 775 14\n", + "start a node 774 1\n", + "start a node 774 13\n", + "start a node 775 3\n", + "start a node 777 73\n", + "start a node 776 63\n", + "start a node 775 58\n", + "start a node 774 54\n", + "start a node 773 52\n", + "start a node 772 51\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 775 5\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 776 10\n", + "start a node 775 9\n", + "start a node 775 1\n", + "start a node 778 235\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 777 198\n", + "start a node 776 157\n", + "start a node 775 152\n", + "start a node 774 25\n", + "start a node 773 16\n", + "start a node 773 9\n", + "start a node 772 5\n", + "start a node 771 1\n", + "start a node 771 4\n", + "start a node 772 4\n", + "start a node 774 127\n", + "start a node 775 5\n", + "start a node 774 3\n", + "start a node 774 2\n", + "start a node 776 41\n", + "start a node 775 23\n", + "start a node 774 4\n", + "start a node 774 19\n", + "start a node 773 15\n", + "start a node 773 4\n", + "start a node 772 1\n", + "start a node 772 3\n", + "start a node 775 18\n", + "start a node 774 16\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 777 37\n", + "start a node 776 20\n", + "start a node 775 1\n", + "start a node 775 19\n", + "start a node 776 17\n", + "start a node 775 13\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 9\n", + "start a node 775 4\n", + "start a node 774 2\n", + "start a node 774 2\n", + "start a node 779 1009\n", + "start a node 782 11271\n", + "start a node 781 8844\n", + "start a node 780 7620\n", + "start a node 779 6749\n", + "start a node 778 5818\n", + "start a node 777 5524\n", + "start a node 777 294\n", + "start a node 776 105\n", + "start a node 775 81\n", + "start a node 774 70\n", + "start a node 773 23\n", + "start a node 772 17\n", + "start a node 772 6\n", + "start a node 771 5\n", + "start a node 771 1\n", + "start a node 773 47\n", + "start a node 772 39\n", + "start a node 771 25\n", + "start a node 770 15\n", + "start a node 769 11\n", + "start a node 768 9\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 769 4\n", + "start a node 770 10\n", + "start a node 769 5\n", + "start a node 768 1\n", + "start a node 768 4\n", + "start a node 769 5\n", + "start a node 768 4\n", + "start a node 768 1\n", + "start a node 771 14\n", + "start a node 770 1\n", + "start a node 770 13\n", + "start a node 772 8\n", + "start a node 771 7\n", + "start a node 771 1\n", + "start a node 774 11\n", + "start a node 773 10\n", + "start a node 773 1\n", + "start a node 775 24\n", + "start a node 774 23\n", + "start a node 774 1\n", + "start a node 776 189\n", + "start a node 775 175\n", + "start a node 774 171\n", + "start a node 773 28\n", + "start a node 772 10\n", + "start a node 771 2\n", + "start a node 771 8\n", + "start a node 770 4\n", + "start a node 770 4\n", + "start a node 769 3\n", + "start a node 769 1\n", + "start a node 772 18\n", + "start a node 771 15\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 773 143\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 775 14\n", + "start a node 774 5\n", + "start a node 773 1\n", + "start a node 773 4\n", + "start a node 774 9\n", + "start a node 778 931\n", + "start a node 777 533\n", + "start a node 776 236\n", + "start a node 775 193\n", + "start a node 774 146\n", + "start a node 773 115\n", + "start a node 772 29\n", + "start a node 771 25\n", + "start a node 770 7\n", + "start a node 769 3\n", + "start a node 769 4\n", + "start a node 768 3\n", + "start a node 768 1\n", + "start a node 770 18\n", + "start a node 769 12\n", + "start a node 769 6\n", + "start a node 768 3\n", + "start a node 768 3\n", + "start a node 771 4\n", + "start a node 770 1\n", + "start a node 770 3\n", + "start a node 772 86\n", + "start a node 771 56\n", + "start a node 770 51\n", + "start a node 769 1\n", + "start a node 769 50\n", + "start a node 770 5\n", + "start a node 769 3\n", + "start a node 768 2\n", + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 1\n", + "start a node 769 2\n", + "start a node 768 1\n", + "start a node 768 1\n", + "start a node 771 30\n", + "start a node 770 17\n", + "start a node 769 7\n", + "start a node 769 10\n", + "start a node 768 6\n", + "start a node 767 3\n", + "start a node 767 3\n", + "start a node 768 4\n", + "start a node 767 3\n", + "start a node 767 1\n", + "start a node 770 13\n", + "start a node 773 31\n", + "start a node 772 16\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 13\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 11\n", + "start a node 772 15\n", + "start a node 774 47\n", + "start a node 773 28\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 772 23\n", + "start a node 771 19\n", + "start a node 770 17\n", + "start a node 769 16\n", + "start a node 769 1\n", + "start a node 770 2\n", + "start a node 771 4\n", + "start a node 770 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 773 19\n", + "start a node 772 18\n", + "start a node 772 1\n", + "start a node 775 43\n", + "start a node 774 14\n", + "start a node 773 7\n", + "start a node 773 7\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 774 29\n", + "start a node 773 22\n", + "start a node 772 21\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 776 297\n", + "start a node 775 21\n", + "start a node 774 16\n", + "start a node 773 15\n", + "start a node 773 1\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 775 276\n", + "start a node 774 265\n", + "start a node 774 11\n", + "start a node 773 9\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 7\n", + "start a node 773 2\n", + "start a node 777 398\n", + "start a node 776 298\n", + "start a node 775 230\n", + "start a node 774 44\n", + "start a node 773 17\n", + "start a node 772 14\n", + "start a node 771 11\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 27\n", + "start a node 772 20\n", + "start a node 771 3\n", + "start a node 771 17\n", + "start a node 770 16\n", + "start a node 770 1\n", + "start a node 772 7\n", + "start a node 774 186\n", + "start a node 773 179\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 775 68\n", + "start a node 774 33\n", + "start a node 773 12\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 9\n", + "start a node 771 7\n", + "start a node 770 6\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 773 21\n", + "start a node 772 18\n", + "start a node 771 2\n", + "start a node 771 16\n", + "start a node 770 1\n", + "start a node 770 15\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 774 35\n", + "start a node 773 29\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 2\n", + "start a node 772 24\n", + "start a node 771 1\n", + "start a node 771 23\n", + "start a node 773 6\n", + "start a node 776 100\n", + "start a node 775 64\n", + "start a node 774 52\n", + "start a node 773 27\n", + "start a node 772 12\n", + "start a node 771 6\n", + "start a node 770 5\n", + "start a node 770 1\n", + "start a node 771 6\n", + "start a node 770 5\n", + "start a node 770 1\n", + "start a node 772 15\n", + "start a node 771 14\n", + "start a node 771 1\n", + "start a node 773 25\n", + "start a node 772 22\n", + "start a node 771 20\n", + "start a node 770 19\n", + "start a node 770 1\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 772 3\n", + "start a node 774 12\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 4\n", + "start a node 775 36\n", + "start a node 774 25\n", + "start a node 773 24\n", + "start a node 773 1\n", + "start a node 774 11\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 779 871\n", + "start a node 778 548\n", + "start a node 777 459\n", + "start a node 776 205\n", + "start a node 775 70\n", + "start a node 774 34\n", + "start a node 773 8\n", + "start a node 772 5\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 2\n", + "start a node 772 3\n", + "start a node 773 26\n", + "start a node 772 23\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 774 36\n", + "start a node 773 23\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 772 17\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 15\n", + "start a node 773 13\n", + "start a node 772 5\n", + "start a node 772 8\n", + "start a node 775 135\n", + "start a node 774 29\n", + "start a node 773 19\n", + "start a node 772 18\n", + "start a node 772 1\n", + "start a node 773 10\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 772 6\n", + "start a node 774 106\n", + "start a node 773 99\n", + "start a node 772 10\n", + "start a node 771 6\n", + "start a node 770 4\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 771 4\n", + "start a node 772 89\n", + "start a node 771 87\n", + "start a node 771 2\n", + "start a node 773 7\n", + "start a node 772 3\n", + "start a node 772 4\n", + "start a node 771 2\n", + "start a node 771 2\n", + "start a node 776 254\n", + "start a node 775 157\n", + "start a node 774 52\n", + "start a node 773 43\n", + "start a node 772 42\n", + "start a node 771 34\n", + "start a node 771 8\n", + "start a node 770 6\n", + "start a node 770 2\n", + "start a node 772 1\n", + "start a node 773 9\n", + "start a node 772 4\n", + "start a node 772 5\n", + "start a node 771 4\n", + "start a node 771 1\n", + "start a node 774 105\n", + "start a node 773 89\n", + "start a node 772 74\n", + "start a node 771 7\n", + "start a node 770 2\n", + "start a node 770 5\n", + "start a node 771 67\n", + "start a node 770 65\n", + "start a node 769 61\n", + "start a node 768 58\n", + "start a node 768 3\n", + "start a node 767 1\n", + "start a node 767 2\n", + "start a node 769 4\n", + "start a node 768 2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 767 1\n", + "start a node 767 1\n", + "start a node 768 2\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 772 15\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 769 1\n", + "start a node 769 1\n", + "start a node 770 1\n", + "start a node 771 12\n", + "start a node 773 16\n", + "start a node 772 15\n", + "start a node 772 1\n", + "start a node 775 97\n", + "start a node 774 54\n", + "start a node 773 28\n", + "start a node 772 26\n", + "start a node 771 25\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 26\n", + "start a node 772 19\n", + "start a node 771 1\n", + "start a node 771 18\n", + "start a node 772 7\n", + "start a node 771 4\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 774 43\n", + "start a node 777 89\n", + "start a node 776 42\n", + "start a node 775 16\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 773 2\n", + "start a node 774 12\n", + "start a node 773 8\n", + "start a node 772 6\n", + "start a node 772 2\n", + "start a node 773 4\n", + "start a node 775 26\n", + "start a node 774 21\n", + "start a node 773 18\n", + "start a node 772 16\n", + "start a node 771 15\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 773 3\n", + "start a node 772 1\n", + "start a node 772 2\n", + "start a node 774 5\n", + "start a node 776 47\n", + "start a node 775 41\n", + "start a node 774 40\n", + "start a node 773 38\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 1\n", + "start a node 775 6\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 778 323\n", + "start a node 777 146\n", + "start a node 776 42\n", + "start a node 775 35\n", + "start a node 774 33\n", + "start a node 773 31\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 7\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 776 104\n", + "start a node 775 85\n", + "start a node 774 80\n", + "start a node 773 3\n", + "start a node 773 77\n", + "start a node 772 76\n", + "start a node 772 1\n", + "start a node 774 5\n", + "start a node 773 2\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 1\n", + "start a node 775 19\n", + "start a node 774 7\n", + "start a node 773 2\n", + "start a node 773 5\n", + "start a node 774 12\n", + "start a node 773 7\n", + "start a node 772 6\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 777 177\n", + "start a node 780 1224\n", + "start a node 779 938\n", + "start a node 778 782\n", + "start a node 777 637\n", + "start a node 776 594\n", + "start a node 775 61\n", + "start a node 774 32\n", + "start a node 773 20\n", + "start a node 772 19\n", + "start a node 772 1\n", + "start a node 773 12\n", + "start a node 772 6\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 774 29\n", + "start a node 773 2\n", + "start a node 773 27\n", + "start a node 772 26\n", + "start a node 772 1\n", + "start a node 775 533\n", + "start a node 776 43\n", + "start a node 775 28\n", + "start a node 774 9\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 774 19\n", + "start a node 775 15\n", + "start a node 774 6\n", + "start a node 774 9\n", + "start a node 773 7\n", + "start a node 773 2\n", + "start a node 777 145\n", + "start a node 776 43\n", + "start a node 775 16\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 14\n", + "start a node 775 27\n", + "start a node 774 12\n", + "start a node 773 10\n", + "start a node 772 9\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 774 15\n", + "start a node 773 10\n", + "start a node 772 9\n", + "start a node 772 1\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 776 102\n", + "start a node 775 84\n", + "start a node 774 70\n", + "start a node 773 68\n", + "start a node 772 65\n", + "start a node 771 64\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 773 2\n", + "start a node 774 14\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 773 9\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 6\n", + "start a node 771 5\n", + "start a node 771 1\n", + "start a node 775 18\n", + "start a node 774 16\n", + "start a node 773 15\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 778 156\n", + "start a node 777 40\n", + "start a node 776 19\n", + "start a node 775 2\n", + "start a node 775 17\n", + "start a node 776 21\n", + "start a node 775 7\n", + "start a node 774 4\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 775 14\n", + "start a node 774 13\n", + "start a node 774 1\n", + "start a node 777 116\n", + "start a node 776 108\n", + "start a node 775 106\n", + "start a node 775 2\n", + "start a node 774 1\n", + "start a node 774 1\n", + "start a node 776 8\n", + "start a node 775 4\n", + "start a node 774 1\n", + "start a node 774 3\n", + "start a node 775 4\n", + "start a node 774 3\n", + "start a node 774 1\n", + "start a node 779 286\n", + "start a node 778 96\n", + "start a node 777 83\n", + "start a node 776 70\n", + "start a node 775 58\n", + "start a node 775 12\n", + "start a node 774 9\n", + "start a node 773 8\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 776 13\n", + "start a node 775 10\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 774 1\n", + "start a node 777 13\n", + "start a node 776 8\n", + "start a node 775 7\n", + "start a node 774 6\n", + "start a node 774 1\n", + "start a node 775 1\n", + "start a node 776 5\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 1\n", + "start a node 775 2\n", + "start a node 778 190\n", + "start a node 777 59\n", + "start a node 776 45\n", + "start a node 775 8\n", + "start a node 774 4\n", + "start a node 774 4\n", + "start a node 775 37\n", + "start a node 774 4\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 33\n", + "start a node 773 32\n", + "start a node 773 1\n", + "start a node 776 14\n", + "start a node 775 11\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 1\n", + "start a node 777 131\n", + "start a node 776 115\n", + "start a node 775 7\n", + "start a node 774 3\n", + "start a node 774 4\n", + "start a node 775 108\n", + "start a node 776 16\n", + "start a node 775 8\n", + "start a node 774 6\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 8\n", + "start a node 774 5\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 781 2427\n", + "start a node 780 1303\n", + "start a node 779 595\n", + "start a node 778 266\n", + "start a node 777 197\n", + "start a node 776 179\n", + "start a node 775 56\n", + "start a node 774 14\n", + "start a node 773 10\n", + "start a node 772 8\n", + "start a node 772 2\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 2\n", + "start a node 774 42\n", + "start a node 773 12\n", + "start a node 772 6\n", + "start a node 771 1\n", + "start a node 771 5\n", + "start a node 772 6\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 770 2\n", + "start a node 770 1\n", + "start a node 773 30\n", + "start a node 772 8\n", + "start a node 771 5\n", + "start a node 770 4\n", + "start a node 770 1\n", + "start a node 771 3\n", + "start a node 770 1\n", + "start a node 770 2\n", + "start a node 772 22\n", + "start a node 775 123\n", + "start a node 774 106\n", + "start a node 774 17\n", + "start a node 773 10\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 8\n", + "start a node 773 7\n", + "start a node 772 1\n", + "start a node 772 6\n", + "start a node 776 18\n", + "start a node 775 4\n", + "start a node 774 3\n", + "start a node 774 1\n", + "start a node 775 14\n", + "start a node 774 12\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 777 69\n", + "start a node 776 33\n", + "start a node 775 25\n", + "start a node 774 12\n", + "start a node 773 5\n", + "start a node 772 2\n", + "start a node 772 3\n", + "start a node 773 7\n", + "start a node 774 13\n", + "start a node 773 8\n", + "start a node 772 3\n", + "start a node 772 5\n", + "start a node 773 5\n", + "start a node 772 1\n", + "start a node 772 4\n", + "start a node 775 8\n", + "start a node 774 7\n", + "start a node 774 1\n", + "start a node 776 36\n", + "start a node 775 32\n", + "start a node 774 3\n", + "start a node 774 29\n", + "start a node 773 6\n", + "start a node 772 4\n", + "start a node 772 2\n", + "start a node 773 23\n", + "start a node 772 20\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 775 4\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 778 329\n", + "start a node 777 264\n", + "start a node 776 41\n", + "start a node 775 28\n", + "start a node 774 14\n", + "start a node 773 12\n", + "start a node 773 2\n", + "start a node 774 14\n", + "start a node 773 9\n", + "start a node 772 5\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 775 13\n", + "start a node 774 1\n", + "start a node 774 12\n", + "start a node 776 223\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start a node 775 40\n", + "start a node 774 14\n", + "start a node 773 12\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 26\n", + "start a node 773 3\n", + "start a node 773 23\n", + "start a node 772 20\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 775 183\n", + "start a node 774 117\n", + "start a node 774 66\n", + "start a node 773 61\n", + "start a node 772 57\n", + "start a node 771 49\n", + "start a node 770 45\n", + "start a node 769 6\n", + "start a node 768 2\n", + "start a node 768 4\n", + "start a node 769 39\n", + "start a node 770 4\n", + "start a node 769 2\n", + "start a node 769 2\n", + "start a node 771 8\n", + "start a node 770 3\n", + "start a node 770 5\n", + "start a node 772 4\n", + "start a node 771 1\n", + "start a node 771 3\n", + "start a node 773 5\n", + "start a node 772 3\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 777 65\n", + "start a node 776 33\n", + "start a node 775 29\n", + "start a node 774 27\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 775 4\n", + "start a node 774 1\n", + "start a node 774 3\n", + "start a node 776 32\n", + "start a node 775 22\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 1\n", + "start a node 774 19\n", + "start a node 773 18\n", + "start a node 773 1\n", + "start a node 775 10\n", + "start a node 774 1\n", + "start a node 774 9\n", + "start a node 779 708\n", + "start a node 778 578\n", + "start a node 777 517\n", + "start a node 776 458\n", + "start a node 775 49\n", + "start a node 774 36\n", + "start a node 773 8\n", + "start a node 772 5\n", + "start a node 772 3\n", + "start a node 771 1\n", + "start a node 771 2\n", + "start a node 773 28\n", + "start a node 772 25\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 774 13\n", + "start a node 773 8\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 6\n", + "start a node 773 5\n", + "start a node 772 4\n", + "start a node 772 1\n", + "start a node 775 409\n", + "start a node 776 59\n", + "start a node 775 37\n", + "start a node 774 16\n", + "start a node 773 10\n", + "start a node 772 6\n", + "start a node 772 4\n", + "start a node 771 3\n", + "start a node 771 1\n", + "start a node 773 6\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 771 1\n", + "start a node 772 3\n", + "start a node 771 2\n", + "start a node 770 1\n", + "start a node 770 1\n", + "start a node 771 1\n", + "start a node 774 21\n", + "start a node 773 2\n", + "start a node 773 19\n", + "start a node 775 22\n", + "start a node 774 13\n", + "start a node 774 9\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 773 7\n", + "start a node 777 61\n", + "start a node 776 37\n", + "start a node 775 18\n", + "start a node 774 3\n", + "start a node 774 15\n", + "start a node 773 14\n", + "start a node 773 1\n", + "start a node 775 19\n", + "start a node 774 16\n", + "start a node 773 12\n", + "start a node 772 11\n", + "start a node 772 1\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 774 3\n", + "start a node 773 1\n", + "start a node 773 2\n", + "start a node 776 24\n", + "start a node 775 5\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 774 3\n", + "start a node 775 19\n", + "start a node 774 1\n", + "start a node 774 18\n", + "start a node 773 17\n", + "start a node 773 1\n", + "start a node 778 130\n", + "start a node 777 79\n", + "start a node 776 77\n", + "start a node 775 76\n", + "start a node 775 1\n", + "start a node 776 2\n", + "start a node 775 1\n", + "start a node 775 1\n", + "start a node 777 51\n", + "start a node 776 29\n", + "start a node 775 12\n", + "start a node 774 6\n", + "start a node 773 4\n", + "start a node 772 3\n", + "start a node 772 1\n", + "start a node 773 2\n", + "start a node 772 1\n", + "start a node 772 1\n", + "start a node 774 6\n", + "start a node 775 17\n", + "start a node 774 14\n", + "start a node 774 3\n", + "start a node 773 2\n", + "start a node 773 1\n", + "start a node 776 22\n", + "start a node 775 18\n", + "start a node 774 2\n", + "start a node 774 16\n", + "start a node 773 15\n", + "start a node 773 1\n", + "start a node 775 4\n", + "start a node 780 1124\n", + "start a node 779 430\n", + "start a node 778 280\n", + "start a node 777 197\n", + "start a node 776 42\n", + "start a node 775 18\n", + "start a node 774 12\n", + "start a node 773 4\n", + "start a node 772 1\n", + "start a node 772 3\n", + "start a node 773 8\n", + "start a node 774 6\n", + "start a node 775 24\n", + "start a node 774 5\n", + "start a node 773 3\n", + "start a node 773 2\n", + "start a node 774 19\n", + "start a node 776 155\n", + "start a node 777 83\n", + "start a node 776 41\n", + "start a node 775 21\n", + "start a node 774 8\n", + "start a node 773 4\n", + "start a node 772 1\n", + "start a node 772 3\n", + "start a node 773 4\n", + "start a node 772 2\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 774 13\n", + "start a node 773 3\n", + "start a node 772 2\n", + "start a node 772 1\n", + "start a node 773 10\n", + "start a node 775 20\n", + "start a node 774 18\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 776 42\n", + "start a node 775 38\n", + "start a node 774 17\n", + "start a node 773 7\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 5\n", + "start a node 773 10\n", + "start a node 772 9\n", + "start a node 772 1\n", + "start a node 774 21\n", + "start a node 775 4\n", + "start a node 774 2\n", + "start a node 774 2\n", + "start a node 773 1\n", + "start a node 773 1\n", + "start a node 778 150\n", + "start a node 777 116\n", + "start a node 776 44\n", + "start a node 775 36\n", + "start a node 774 34\n", + "start a node 773 1\n", + "start a node 773 33\n", + "start a node 774 2\n", + "start a node 775 8\n", + "start a node 774 4\n", + "start a node 773 3\n", + "start a node 773 1\n", + "start a node 774 4\n", + "start a node 773 1\n", + "start a node 773 3\n", + "start a node 776 72\n", + "start a node 775 14\n", + "start a node 774 13\n", + "start a node 774 1\n", + "start a node 775 58\n", + "start a node 774 50\n", + "start a node 773 11\n", + "start a node 772 2\n", + "start a node 771 1\n", + "start a node 771 1\n", + "start a node 772 9\n", + "start a node 771 5\n", + "start a node 771 4\n", + "start a node 770 3\n", + "start a node 770 1\n", + "start a node 773 39\n", + "start a node 772 38\n", + "start a node 772 1\n", + "start a node 774 8\n", + "start a node 773 7\n", + "start a node 773 1\n", + "start a node 777 34\n", + "start a node 776 9\n", + "start a node 775 3\n", + "start a node 774 2\n", + "start a node 774 1\n", + "start a node 775 6\n", + "start a node 776 25\n", + "start a node 775 24\n", + "start a node 775 1\n", + "start a node 779 694\n", + "tree is: {378: {0: {567: {0: {541: {0: {458: {0: {403: {0: {590: {0: {483: {0: {154: {0: {429: {0: 7, 1: {209: {0: {265: {0: {237: {0: {181: {0: {317: {0: {542: {0: {607: {0: 4, 1: {99: {0: 5, 1: 2}}}}, 1: {202: {0: 9, 1: 3}}}}, 1: {261: {0: 5, 1: {158: {0: 9, 1: 8}}}}}}, 1: {480: {0: {155: {0: 9, 1: 3}}, 1: {121: {0: {153: {0: 4, 1: 8}}, 1: 2}}}}}}, 1: {403: {0: {286: {0: {209: {0: 2, 1: 4}}, 1: 5}}, 1: {401: {0: {185: {0: 4, 1: 9}}, 1: {231: {0: 9, 1: 3}}}}}}}}, 1: {403: {0: {204: {0: {98: {0: 5, 1: 2}}, 1: 7}}, 1: {398: {0: {644: {0: {295: {0: {233: {0: 7, 1: 3}}, 1: 7}}, 1: {204: {0: 9, 1: {174: {0: 7, 1: 2}}}}}}, 1: {263: {0: 4, 1: {405: {0: 9, 1: 5}}}}}}}}}}, 1: {404: {0: {562: {0: {431: {0: {268: {0: 5, 1: {177: {0: 9, 1: 3}}}}, 1: {345: {0: {426: {0: {234: {0: 9, 1: 8}}, 1: 9}}, 1: {178: {0: 3, 1: 5}}}}}}, 1: {296: {0: {218: {0: 2, 1: 4}}, 1: 8}}}}, 1: {426: {0: {372: {0: {232: {0: 3, 1: {181: {0: 7, 1: 3}}}}, 1: {103: {0: {175: {0: 9, 1: 8}}, 1: 6}}}}, 1: {177: {0: {289: {0: 9, 1: {400: {0: {207: {0: 4, 1: {159: {0: 9, 1: 4}}}}, 1: 9}}}}, 1: {619: {0: {178: {0: 7, 1: 9}}, 1: 3}}}}}}}}}}}}, 1: {512: {0: {508: {0: {512: {0: {321: {0: {478: {0: {481: {0: {642: {0: {183: {0: {613: {0: {375: {0: 4, 1: {154: {0: 1, 1: 4}}}}, 1: {123: {0: 5, 1: {92: {0: 0, 1: 2}}}}}}, 1: {209: {0: {152: {0: 5, 1: 9}}, 1: {211: {0: 3, 1: 7}}}}}}, 1: {560: {0: {239: {0: {240: {0: {587: {0: 5, 1: {375: {0: {204: {0: 5, 1: 9}}, 1: {181: {0: 5, 1: 3}}}}}}, 1: {123: {0: 3, 1: 0}}}}, 1: {157: {0: 3, 1: 5}}}}, 1: {128: {0: 2, 1: 5}}}}}}, 1: {458: {0: {127: {0: 3, 1: 2}}, 1: 8}}}}, 1: {98: {0: 0, 1: 6}}}}, 1: {266: {0: {267: {0: {237: {0: {456: {0: 5, 1: {124: {0: 9, 1: 3}}}}, 1: {369: {0: {126: {0: 3, 1: 1}}, 1: {154: {0: 3, 1: 5}}}}}}, 1: {238: {0: 3, 1: 9}}}}, 1: {402: {0: {286: {0: 3, 1: 9}}, 1: 9}}}}}}, 1: {350: {0: {587: {0: {639: {0: {211: {0: {290: {0: 9, 1: {154: {0: 4, 1: 5}}}}, 1: {615: {0: {177: {0: 8, 1: 3}}, 1: {154: {0: 9, 1: {175: {0: 2, 1: {182: {0: 2, 1: 7}}}}}}}}}}, 1: 3}}, 1: {159: {0: {402: {0: {381: {0: 2, 1: 7}}, 1: 8}}, 1: {123: {0: {124: {0: 5, 1: 6}}, 1: 1}}}}}}, 1: {351: {0: {213: {0: {647: {0: 1, 1: 2}}, 1: 3}}, 1: {613: {0: {151: {0: 9, 1: {148: {0: 2, 1: 7}}}}, 1: 3}}}}}}}}, 1: {459: {0: {294: {0: {431: {0: 0, 1: 9}}, 1: {180: {0: 8, 1: 3}}}}, 1: {72: {0: {122: {0: 8, 1: 2}}, 1: 6}}}}}}, 1: {376: {0: {479: {0: {592: {0: {648: {0: {567: {0: {537: {0: {152: {0: {425: {0: 1, 1: {95: {0: 8, 1: 2}}}}, 1: {180: {0: 7, 1: 2}}}}, 1: {229: {0: {176: {0: 7, 1: {212: {0: 2, 1: 7}}}}, 1: 2}}}}, 1: {563: {0: {124: {0: 8, 1: 9}}, 1: 2}}}}, 1: {151: {0: {154: {0: {618: {0: {151: {0: 9, 1: 3}}, 1: 8}}, 1: {176: {0: 8, 1: 2}}}}, 1: 2}}}}, 1: {383: {0: {534: {0: {213: {0: 2, 1: {152: {0: 8, 1: 3}}}}, 1: 2}}, 1: {93: {0: 5, 1: 8}}}}}}, 1: {298: {0: 6, 1: {99: {0: 9, 1: 4}}}}}}, 1: {431: {0: {155: {0: 1, 1: 5}}, 1: 8}}}}}}}}, 1: {211: {0: {537: {0: {266: {0: {183: {0: {237: {0: {127: {0: {317: {0: {380: {0: 4, 1: {418: {0: {260: {0: 4, 1: 0}}, 1: 6}}}}, 1: {259: {0: {162: {0: 5, 1: 4}}, 1: {230: {0: 9, 1: {230: {0: 0, 1: 7}}}}}}}}, 1: {589: {0: {155: {0: 4, 1: {205: {0: 2, 1: 8}}}}, 1: {455: {0: {99: {0: 5, 1: 0}}, 1: 6}}}}}}, 1: {350: {0: {132: {0: 7, 1: 4}}, 1: 9}}}}, 1: {206: {0: {210: {0: {266: {0: {454: {0: {374: {0: 2, 1: {99: {0: 4, 1: 6}}}}, 1: 4}}, 1: {156: {0: {100: {0: 9, 1: 2}}, 1: 0}}}}, 1: {153: {0: {156: {0: 9, 1: 8}}, 1: {122: {0: 5, 1: 2}}}}}}, 1: {186: {0: 9, 1: {150: {0: 8, 1: 5}}}}}}}}, 1: {487: {0: {458: {0: {354: {0: 5, 1: {154: {0: {199: {0: 0, 1: 7}}, 1: 2}}}}, 1: {264: {0: {104: {0: {160: {0: 3, 1: 4}}, 1: 6}}, 1: {180: {0: {236: {0: 0, 1: 9}}, 1: 7}}}}}}, 1: {211: {0: {439: {0: {537: {0: {260: {0: {160: {0: 9, 1: 4}}, 1: {311: {0: 7, 1: 9}}}}, 1: 7}}, 1: 2}}, 1: {297: {0: 4, 1: 9}}}}}}}}, 1: {269: {0: {244: {0: {293: {0: {245: {0: 6, 1: 4}}, 1: {121: {0: {149: {0: 9, 1: 4}}, 1: 8}}}}, 1: 4}}, 1: {291: {0: {183: {0: {236: {0: {323: {0: 4, 1: 6}}, 1: {175: {0: 0, 1: 9}}}}, 1: {121: {0: 9, 1: 2}}}}, 1: {376: {0: 5, 1: {104: {0: 7, 1: 4}}}}}}}}}}, 1: {407: {0: {378: {0: {432: {0: {448: {0: {433: {0: {515: {0: {378: {0: 5, 1: 9}}, 1: 2}}, 1: {178: {0: 0, 1: {152: {0: 2, 1: 9}}}}}}, 1: {203: {0: {181: {0: 4, 1: 9}}, 1: 0}}}}, 1: {564: {0: {187: {0: 9, 1: 7}}, 1: {211: {0: {101: {0: 8, 1: 6}}, 1: 7}}}}}}, 1: {230: {0: {156: {0: {532: {0: {207: {0: {457: {0: {154: {0: {505: {0: 9, 1: {314: {0: {239: {0: 7, 1: 4}}, 1: 9}}}}, 1: 4}}, 1: {283: {0: 4, 1: {178: {0: 7, 1: 9}}}}}}, 1: {181: {0: {261: {0: 7, 1: 9}}, 1: {500: {0: 9, 1: 2}}}}}}, 1: 2}}, 1: {158: {0: 4, 1: 3}}}}, 1: {211: {0: 3, 1: 7}}}}}}, 1: {589: {0: {346: {0: {230: {0: 9, 1: {312: {0: 7, 1: 9}}}}, 1: {462: {0: {128: {0: {322: {0: 9, 1: 4}}, 1: {71: {0: 4, 1: 6}}}}, 1: {351: {0: {100: {0: 9, 1: 6}}, 1: 4}}}}}}, 1: {373: {0: {381: {0: 2, 1: {180: {0: 8, 1: 7}}}}, 1: {431: {0: 0, 1: {103: {0: 9, 1: 6}}}}}}}}}}}}}}, 1: {425: {0: {322: {0: {458: {0: {481: {0: {384: {0: {451: {0: {395: {0: {151: {0: {324: {0: {324: {0: 5, 1: {149: {0: 0, 1: 3}}}}, 1: {210: {0: {94: {0: 5, 1: 2}}, 1: 3}}}}, 1: {355: {0: 3, 1: 2}}}}, 1: {203: {0: 0, 1: 2}}}}, 1: 0}}, 1: 0}}, 1: {191: {0: {276: {0: 2, 1: 5}}, 1: {245: {0: 5, 1: 8}}}}}}, 1: {537: {0: {404: {0: {433: {0: {124: {0: {481: {0: 5, 1: 6}}, 1: 2}}, 1: {263: {0: 2, 1: {154: {0: {133: {0: 2, 1: 1}}, 1: 3}}}}}}, 1: {268: {0: {535: {0: 3, 1: 1}}, 1: {504: {0: 1, 1: 2}}}}}}, 1: {266: {0: {644: {0: 2, 1: 3}}, 1: {131: {0: 7, 1: {131: {0: 1, 1: 0}}}}}}}}}}, 1: {317: {0: {424: {0: {268: {0: {269: {0: {149: {0: {321: {0: {245: {0: 5, 1: 0}}, 1: {289: {0: 3, 1: {637: {0: 5, 1: {128: {0: 3, 1: 5}}}}}}}}, 1: {234: {0: 3, 1: 5}}}}, 1: {583: {0: {123: {0: {151: {0: 5, 1: 9}}, 1: 3}}, 1: 3}}}}, 1: {219: {0: {419: {0: 3, 1: {96: {0: 0, 1: 3}}}}, 1: 5}}}}, 1: {590: {0: {124: {0: {151: {0: 5, 1: 3}}, 1: 2}}, 1: {107: {0: 0, 1: 6}}}}}}, 1: {301: {0: {125: {0: {242: {0: 5, 1: {157: {0: 5, 1: {155: {0: 1, 1: 3}}}}}}, 1: {260: {0: {133: {0: 3, 1: 5}}, 1: 5}}}}, 1: 0}}}}}}, 1: {512: {0: 0, 1: {103: {0: 2, 1: 6}}}}}}}}, 1: {380: {0: {408: {0: {352: {0: {349: {0: {378: {0: {321: {0: 5, 1: {153: {0: {179: {0: {132: {0: {455: {0: 5, 1: {204: {0: {133: {0: 5, 1: 0}}, 1: 3}}}}, 1: {159: {0: 8, 1: 0}}}}, 1: {233: {0: 3, 1: {180: {0: 5, 1: 8}}}}}}, 1: {235: {0: 3, 1: 5}}}}}}, 1: {647: {0: {318: {0: {260: {0: 2, 1: 4}}, 1: {153: {0: 4, 1: 9}}}}, 1: {183: {0: {209: {0: {123: {0: 4, 1: 3}}, 1: 9}}, 1: {238: {0: 8, 1: 5}}}}}}}}, 1: {179: {0: {319: {0: {507: {0: {188: {0: {244: {0: {529: {0: 3, 1: 6}}, 1: {184: {0: 5, 1: 0}}}}, 1: 5}}, 1: {182: {0: {204: {0: 5, 1: 2}}, 1: {645: {0: 6, 1: 1}}}}}}, 1: {475: {0: {507: {0: {292: {0: {370: {0: {205: {0: 8, 1: 5}}, 1: 5}}, 1: {484: {0: 5, 1: {291: {0: {159: {0: 3, 1: 0}}, 1: 5}}}}}}, 1: {510: {0: {180: {0: {645: {0: 5, 1: 1}}, 1: {99: {0: 1, 1: 4}}}}, 1: 6}}}}, 1: {245: {0: 2, 1: 0}}}}}}, 1: {535: {0: {263: {0: {353: {0: 3, 1: {150: {0: 5, 1: 0}}}}, 1: {209: {0: {155: {0: 1, 1: 8}}, 1: {152: {0: 5, 1: 3}}}}}}, 1: {153: {0: {171: {0: 2, 1: 3}}, 1: {69: {0: 8, 1: 6}}}}}}}}}}, 1: {350: {0: {482: {0: {569: {0: {209: {0: {402: {0: {268: {0: {150: {0: 2, 1: 3}}, 1: {125: {0: 4, 1: 8}}}}, 1: {69: {0: {269: {0: {696: {0: 4, 1: 9}}, 1: 7}}, 1: 2}}}}, 1: {177: {0: {290: {0: {183: {0: 9, 1: 8}}, 1: {210: {0: 4, 1: 9}}}}, 1: {231: {0: 3, 1: 8}}}}}}, 1: {150: {0: {225: {0: 8, 1: 3}}, 1: 3}}}}, 1: {431: {0: {404: {0: {668: {0: 8, 1: 9}}, 1: {160: {0: 7, 1: 4}}}}, 1: {183: {0: 4, 1: {121: {0: 9, 1: 2}}}}}}}}, 1: {377: {0: {328: {0: 3, 1: {199: {0: 5, 1: 3}}}}, 1: {590: {0: {156: {0: 9, 1: 8}}, 1: {127: {0: {158: {0: 1, 1: 5}}, 1: 6}}}}}}}}}}, 1: {588: {0: {154: {0: {209: {0: {236: {0: {559: {0: 4, 1: 8}}, 1: {420: {0: {431: {0: {256: {0: 4, 1: {264: {0: 8, 1: 3}}}}, 1: 9}}, 1: {218: {0: 4, 1: 7}}}}}}, 1: {379: {0: {319: {0: {321: {0: {179: {0: {156: {0: 9, 1: 2}}, 1: 5}}, 1: {202: {0: 4, 1: 7}}}}, 1: 3}}, 1: {535: {0: {317: {0: {430: {0: 5, 1: 9}}, 1: {211: {0: 4, 1: 9}}}}, 1: {325: {0: 8, 1: {122: {0: 9, 1: 2}}}}}}}}}}, 1: {458: {0: {320: {0: {179: {0: 8, 1: 5}}, 1: {130: {0: 3, 1: 5}}}}, 1: {424: {0: {246: {0: 8, 1: 4}}, 1: 2}}}}}}, 1: {347: {0: {559: {0: {516: {0: {157: {0: 8, 1: 9}}, 1: 2}}, 1: 2}}, 1: {328: {0: {210: {0: 3, 1: 5}}, 1: {179: {0: 0, 1: 2}}}}}}}}}}, 1: {211: {0: {155: {0: {237: {0: {182: {0: 4, 1: {482: {0: {258: {0: {208: {0: 3, 1: 9}}, 1: 9}}, 1: {395: {0: 8, 1: {178: {0: 7, 1: 4}}}}}}}}, 1: {234: {0: {212: {0: {207: {0: {104: {0: 4, 1: 2}}, 1: {204: {0: 3, 1: 9}}}}, 1: {185: {0: {316: {0: 9, 1: 4}}, 1: {258: {0: 4, 1: 9}}}}}}, 1: {510: {0: {437: {0: 9, 1: 2}}, 1: {341: {0: 7, 1: {422: {0: 8, 1: 9}}}}}}}}}}, 1: {483: {0: {452: {0: {232: {0: {152: {0: {374: {0: 4, 1: {97: {0: 9, 1: 3}}}}, 1: {206: {0: 3, 1: 5}}}}, 1: {401: {0: {205: {0: 8, 1: 5}}, 1: {260: {0: 9, 1: 5}}}}}}, 1: {588: {0: {155: {0: 4, 1: 8}}, 1: 2}}}}, 1: {102: {0: 8, 1: 2}}}}}}, 1: {484: {0: {235: {0: {423: {0: {152: {0: {615: {0: {455: {0: {148: {0: 9, 1: 5}}, 1: {615: {0: {209: {0: {698: {0: 4, 1: 9}}, 1: {290: {0: {423: {0: 8, 1: 9}}, 1: 4}}}}, 1: {187: {0: 9, 1: 8}}}}}}, 1: {481: {0: {557: {0: 3, 1: 5}}, 1: {129: {0: 9, 1: 8}}}}}}, 1: {370: {0: {449: {0: 3, 1: 2}}, 1: {238: {0: 9, 1: 8}}}}}}, 1: {457: {0: {147: {0: 3, 1: {94: {0: 5, 1: 2}}}}, 1: {701: {0: {150: {0: 4, 1: 2}}, 1: {182: {0: 9, 1: 4}}}}}}}}, 1: {614: {0: {624: {0: 9, 1: {675: {0: {317: {0: {341: {0: 4, 1: 9}}, 1: 4}}, 1: {258: {0: 5, 1: 8}}}}}}, 1: {128: {0: 3, 1: 2}}}}}}, 1: {651: {0: {212: {0: {455: {0: {397: {0: {181: {0: 9, 1: 7}}, 1: {177: {0: 4, 1: 2}}}}, 1: {157: {0: {179: {0: 4, 1: 8}}, 1: {156: {0: 2, 1: 8}}}}}}, 1: {207: {0: {670: {0: {182: {0: {399: {0: 8, 1: {186: {0: 9, 1: 8}}}}, 1: 9}}, 1: {351: {0: {208: {0: 9, 1: 7}}, 1: 9}}}}, 1: {404: {0: 8, 1: 7}}}}}}, 1: 8}}}}}}}}}}, 1: {211: {0: {266: {0: {539: {0: {155: {0: 4, 1: {534: {0: {617: {0: {184: {0: {561: {0: {156: {0: {209: {0: {178: {0: {216: {0: {449: {0: {229: {0: 6, 1: 4}}, 1: 4}}, 1: 5}}, 1: {155: {0: {125: {0: 9, 1: 4}}, 1: {127: {0: 6, 1: 8}}}}}}, 1: 9}}, 1: {212: {0: 5, 1: {154: {0: 9, 1: 3}}}}}}, 1: 6}}, 1: {128: {0: {321: {0: {317: {0: {239: {0: {238: {0: 5, 1: 9}}, 1: {121: {0: 9, 1: {145: {0: 3, 1: 2}}}}}}, 1: {226: {0: 3, 1: 8}}}}, 1: {638: {0: {535: {0: 9, 1: {178: {0: {155: {0: 7, 1: 9}}, 1: 8}}}}, 1: {121: {0: 3, 1: 2}}}}}}, 1: {488: {0: {181: {0: 0, 1: 8}}, 1: {126: {0: 4, 1: 6}}}}}}}}, 1: {287: {0: {647: {0: {370: {0: {666: {0: 2, 1: 3}}, 1: 3}}, 1: {128: {0: 5, 1: 3}}}}, 1: {510: {0: {423: {0: 5, 1: {159: {0: 9, 1: 5}}}}, 1: {152: {0: 2, 1: 8}}}}}}}}, 1: {680: {0: {265: {0: {288: {0: 2, 1: 8}}, 1: 4}}, 1: 8}}}}}}, 1: {620: {0: {590: {0: {296: {0: {271: {0: 6, 1: {205: {0: 4, 1: 8}}}}, 1: {155: {0: {404: {0: {214: {0: {271: {0: 6, 1: 5}}, 1: 4}}, 1: 4}}, 1: {593: {0: {128: {0: 8, 1: 4}}, 1: {125: {0: 0, 1: 2}}}}}}}}, 1: {515: {0: {181: {0: {377: {0: 5, 1: {185: {0: 4, 1: 9}}}}, 1: {179: {0: 2, 1: 8}}}}, 1: {647: {0: {292: {0: 2, 1: 8}}, 1: 8}}}}}}, 1: {156: {0: {485: {0: {374: {0: {98: {0: 5, 1: 2}}, 1: {154: {0: 8, 1: 1}}}}, 1: {210: {0: 4, 1: 9}}}}, 1: {617: {0: {184: {0: {100: {0: {152: {0: 4, 1: 7}}, 1: 6}}, 1: 8}}, 1: {315: {0: 2, 1: {123: {0: 6, 1: 5}}}}}}}}}}}}, 1: {406: {0: {377: {0: {434: {0: {290: {0: {269: {0: {346: {0: {185: {0: {444: {0: {132: {0: 5, 1: 6}}, 1: 2}}, 1: {104: {0: 3, 1: 6}}}}, 1: {188: {0: 3, 1: 8}}}}, 1: 5}}, 1: {490: {0: 5, 1: {202: {0: {179: {0: 9, 1: 0}}, 1: {190: {0: 2, 1: 5}}}}}}}}, 1: {398: {0: {340: {0: {235: {0: 2, 1: {231: {0: 9, 1: 7}}}}, 1: {404: {0: {213: {0: {216: {0: 9, 1: 5}}, 1: 4}}, 1: 9}}}}, 1: {285: {0: {425: {0: 0, 1: 4}}, 1: {297: {0: {176: {0: {186: {0: 3, 1: 8}}, 1: 5}}, 1: 7}}}}}}}}, 1: {484: {0: {373: {0: {480: {0: {147: {0: 9, 1: 3}}, 1: {178: {0: {182: {0: 2, 1: 4}}, 1: 9}}}}, 1: {215: {0: {130: {0: 4, 1: 3}}, 1: 8}}}}, 1: {397: {0: {265: {0: {154: {0: 4, 1: 9}}, 1: {400: {0: 7, 1: {294: {0: 2, 1: {177: {0: 9, 1: 7}}}}}}}}, 1: {297: {0: {206: {0: 4, 1: 9}}, 1: {160: {0: 9, 1: 2}}}}}}}}}}, 1: {397: {0: {258: {0: {504: {0: {297: {0: {263: {0: {482: {0: {177: {0: 9, 1: 7}}, 1: {293: {0: {374: {0: 4, 1: {264: {0: 4, 1: 9}}}}, 1: {215: {0: 4, 1: 7}}}}}}, 1: {613: {0: {368: {0: {365: {0: {153: {0: {210: {0: 7, 1: 4}}, 1: 4}}, 1: 9}}, 1: {456: {0: 9, 1: {265: {0: {237: {0: 7, 1: 5}}, 1: 4}}}}}}, 1: 5}}}}, 1: {163: {0: {591: {0: {284: {0: 9, 1: {236: {0: 7, 1: 9}}}}, 1: {210: {0: {154: {0: 7, 1: 8}}, 1: {212: {0: 9, 1: 3}}}}}}, 1: {161: {0: 4, 1: 8}}}}}}, 1: {347: {0: {313: {0: {161: {0: 2, 1: 8}}, 1: 9}}, 1: 4}}}}, 1: {545: {0: {394: {0: {394: {0: 7, 1: 9}}, 1: 9}}, 1: {238: {0: 2, 1: 3}}}}}}, 1: {236: {0: {353: {0: {396: {0: {457: {0: {205: {0: 9, 1: {128: {0: 4, 1: 3}}}}, 1: {271: {0: 4, 1: 9}}}}, 1: {180: {0: {381: {0: 4, 1: {211: {0: 2, 1: 4}}}}, 1: {154: {0: 9, 1: 8}}}}}}, 1: {274: {0: 9, 1: 8}}}}, 1: {218: {0: {434: {0: {615: {0: 9, 1: 8}}, 1: {514: {0: {181: {0: 7, 1: 4}}, 1: 9}}}}, 1: {238: {0: 4, 1: {213: {0: 5, 1: 8}}}}}}}}}}}}}}, 1: {379: {0: {539: {0: {380: {0: {351: {0: {216: {0: {320: {0: {534: {0: {642: {0: {343: {0: {371: {0: {585: {0: {429: {0: {399: {0: {264: {0: 5, 1: {243: {0: 9, 1: 5}}}}, 1: 9}}, 1: {158: {0: 9, 1: 5}}}}, 1: {206: {0: 2, 1: 9}}}}, 1: {205: {0: {531: {0: 5, 1: 1}}, 1: {151: {0: {178: {0: 7, 1: 9}}, 1: 2}}}}}}, 1: {510: {0: {394: {0: {641: {0: 9, 1: {155: {0: 4, 1: 5}}}}, 1: {101: {0: {208: {0: {211: {0: 9, 1: 5}}, 1: 5}}, 1: 6}}}}, 1: {455: {0: {288: {0: 4, 1: 5}}, 1: {155: {0: {269: {0: 9, 1: 8}}, 1: {152: {0: 4, 1: 9}}}}}}}}}}, 1: {149: {0: 5, 1: {175: {0: 5, 1: 3}}}}}}, 1: {126: {0: 6, 1: 0}}}}, 1: {206: {0: {264: {0: 3, 1: {616: {0: {151: {0: {484: {0: 4, 1: 2}}, 1: 8}}, 1: {558: {0: {671: {0: 5, 1: 9}}, 1: {103: {0: 0, 1: 6}}}}}}}}, 1: {508: {0: 3, 1: {512: {0: {178: {0: 5, 1: 3}}, 1: 2}}}}}}}}, 1: {355: {0: 5, 1: {158: {0: {187: {0: 2, 1: {159: {0: 9, 1: 4}}}}, 1: 0}}}}}}, 1: {371: {0: {209: {0: {293: {0: {429: {0: {185: {0: 2, 1: 9}}, 1: {207: {0: 7, 1: 3}}}}, 1: {450: {0: {93: {0: 7, 1: 2}}, 1: {240: {0: 4, 1: 9}}}}}}, 1: {536: {0: {518: {0: {261: {0: {397: {0: {209: {0: 9, 1: 7}}, 1: 3}}, 1: {616: {0: 9, 1: {207: {0: 9, 1: 3}}}}}}, 1: {149: {0: 2, 1: 8}}}}, 1: {428: {0: 3, 1: {98: {0: 7, 1: 1}}}}}}}}, 1: {430: {0: {266: {0: {185: {0: 2, 1: 8}}, 1: {152: {0: 5, 1: 9}}}}, 1: {209: {0: 4, 1: {448: {0: {155: {0: 9, 1: 3}}, 1: {182: {0: 9, 1: 4}}}}}}}}}}}}, 1: {506: {0: {240: {0: {213: {0: {537: {0: {447: {0: {290: {0: 9, 1: 3}}, 1: 4}}, 1: {702: {0: {187: {0: 4, 1: 9}}, 1: 9}}}}, 1: {458: {0: {209: {0: {184: {0: 5, 1: 9}}, 1: 8}}, 1: 9}}}}, 1: {476: {0: {374: {0: 9, 1: {262: {0: {152: {0: {178: {0: 4, 1: 8}}, 1: 0}}, 1: 9}}}}, 1: {341: {0: {205: {0: {98: {0: {155: {0: 5, 1: 4}}, 1: 2}}, 1: 7}}, 1: 9}}}}}}, 1: {319: {0: {342: {0: {697: {0: 2, 1: 7}}, 1: {183: {0: 8, 1: 9}}}}, 1: {238: {0: {134: {0: 8, 1: 5}}, 1: 4}}}}}}}}, 1: {347: {0: {327: {0: {349: {0: {405: {0: {155: {0: {298: {0: {318: {0: 5, 1: 0}}, 1: 9}}, 1: {95: {0: 6, 1: 2}}}}, 1: {488: {0: {291: {0: {152: {0: 8, 1: 0}}, 1: 9}}, 1: {155: {0: {124: {0: 2, 1: 0}}, 1: 6}}}}}}, 1: {324: {0: {153: {0: {148: {0: 4, 1: 9}}, 1: 2}}, 1: {207: {0: 8, 1: {239: {0: 8, 1: 7}}}}}}}}, 1: {557: {0: {178: {0: {131: {0: 9, 1: 2}}, 1: {153: {0: 8, 1: 3}}}}, 1: 2}}}}, 1: {240: {0: {179: {0: {616: {0: {650: {0: 6, 1: {126: {0: {126: {0: 5, 1: 1}}, 1: 6}}}}, 1: {156: {0: 4, 1: {129: {0: 5, 1: 6}}}}}}, 1: {174: {0: {189: {0: 8, 1: 5}}, 1: 2}}}}, 1: {457: {0: {241: {0: {260: {0: 2, 1: 0}}, 1: 5}}, 1: {373: {0: {154: {0: {181: {0: 4, 1: 9}}, 1: 6}}, 1: 8}}}}}}}}}}, 1: {156: {0: {315: {0: {317: {0: {367: {0: {342: {0: {338: {0: {500: {0: {481: {0: {339: {0: {509: {0: {207: {0: {320: {0: {184: {0: {99: {0: 2, 1: 6}}, 1: 8}}, 1: {155: {0: 3, 1: 4}}}}, 1: {283: {0: 7, 1: 3}}}}, 1: {255: {0: 3, 1: {121: {0: 9, 1: 2}}}}}}, 1: 9}}, 1: {428: {0: {424: {0: {239: {0: 2, 1: 7}}, 1: {557: {0: 3, 1: 7}}}}, 1: {182: {0: {235: {0: {180: {0: {156: {0: 7, 1: 4}}, 1: 9}}, 1: 7}}, 1: {345: {0: {154: {0: {555: {0: {233: {0: 9, 1: 3}}, 1: {202: {0: 9, 1: 7}}}}, 1: {172: {0: 2, 1: 3}}}}, 1: {209: {0: {149: {0: 2, 1: 7}}, 1: {323: {0: 7, 1: 3}}}}}}}}}}}}, 1: {618: {0: {292: {0: 2, 1: 8}}, 1: {181: {0: 7, 1: 3}}}}}}, 1: {673: {0: 9, 1: 3}}}}, 1: {177: {0: {529: {0: 9, 1: 8}}, 1: {158: {0: {177: {0: 4, 1: 7}}, 1: 5}}}}}}, 1: {647: {0: {232: {0: {293: {0: 9, 1: {182: {0: {181: {0: 9, 1: 4}}, 1: 4}}}}, 1: 9}}, 1: {509: {0: 9, 1: {202: {0: 8, 1: {151: {0: 7, 1: 9}}}}}}}}}}, 1: {558: {0: {210: {0: {99: {0: {393: {0: {263: {0: 4, 1: {153: {0: 9, 1: {152: {0: 4, 1: 0}}}}}}, 1: 4}}, 1: 6}}, 1: {537: {0: {644: {0: {421: {0: {482: {0: 9, 1: {321: {0: 4, 1: {184: {0: 9, 1: 4}}}}}}, 1: {701: {0: {454: {0: 9, 1: 4}}, 1: {186: {0: 9, 1: 4}}}}}}, 1: {162: {0: {156: {0: 3, 1: 0}}, 1: 5}}}}, 1: {459: {0: {344: {0: {210: {0: {296: {0: {418: {0: 9, 1: 4}}, 1: 4}}, 1: 9}}, 1: {211: {0: {232: {0: 6, 1: 4}}, 1: {181: {0: 7, 1: 8}}}}}}, 1: {376: {0: 4, 1: {123: {0: 9, 1: 0}}}}}}}}}}, 1: {426: {0: 2, 1: 8}}}}}}, 1: 9}}, 1: {538: {0: {207: {0: {619: {0: {297: {0: 4, 1: {237: {0: 4, 1: {128: {0: 2, 1: 3}}}}}}, 1: {541: {0: {407: {0: {184: {0: 4, 1: 9}}, 1: 4}}, 1: {129: {0: {123: {0: {153: {0: 3, 1: 8}}, 1: 2}}, 1: {100: {0: 5, 1: 6}}}}}}}}, 1: {643: {0: {373: {0: {263: {0: {430: {0: {153: {0: {154: {0: 5, 1: 9}}, 1: 8}}, 1: {402: {0: 2, 1: 9}}}}, 1: 4}}, 1: {376: {0: {100: {0: 5, 1: 2}}, 1: 8}}}}, 1: {324: {0: {259: {0: 5, 1: {151: {0: 8, 1: 9}}}}, 1: 3}}}}}}, 1: {589: {0: {352: {0: {268: {0: 6, 1: 4}}, 1: {488: {0: {482: {0: {129: {0: 9, 1: 2}}, 1: 8}}, 1: {129: {0: 4, 1: {101: {0: 2, 1: 6}}}}}}}}, 1: {343: {0: 2, 1: {214: {0: {129: {0: 8, 1: 2}}, 1: 9}}}}}}}}}}}}}}}}, 1: {242: {0: {653: {0: {295: {0: {243: {0: {267: {0: 6, 1: {339: {0: {289: {0: {260: {0: {235: {0: 2, 1: {176: {0: 2, 1: 7}}}}, 1: {621: {0: {616: {0: {365: {0: 2, 1: 9}}, 1: 8}}, 1: 0}}}}, 1: {347: {0: 6, 1: {266: {0: 4, 1: {154: {0: 7, 1: 0}}}}}}}}, 1: {460: {0: {376: {0: {94: {0: 0, 1: 6}}, 1: 7}}, 1: 9}}}}}}, 1: {185: {0: {128: {0: {593: {0: {210: {0: {371: {0: 4, 1: {154: {0: 5, 1: 2}}}}, 1: {312: {0: {150: {0: {183: {0: 5, 1: 7}}, 1: 8}}, 1: {188: {0: 9, 1: 4}}}}}}, 1: {241: {0: {158: {0: 6, 1: {129: {0: 8, 1: 0}}}}, 1: {96: {0: 4, 1: 8}}}}}}, 1: {407: {0: {287: {0: 2, 1: {127: {0: 8, 1: 6}}}}, 1: 0}}}}, 1: {488: {0: {507: {0: {427: {0: {288: {0: {155: {0: 7, 1: 2}}, 1: {180: {0: 8, 1: 0}}}}, 1: {189: {0: 8, 1: 9}}}}, 1: {350: {0: {130: {0: 0, 1: 6}}, 1: {148: {0: 2, 1: 7}}}}}}, 1: {159: {0: {369: {0: 9, 1: {127: {0: {156: {0: 2, 1: 4}}, 1: 0}}}}, 1: {651: {0: {456: {0: {486: {0: 0, 1: 2}}, 1: 2}}, 1: {128: {0: 9, 1: 6}}}}}}}}}}}}, 1: {487: {0: {239: {0: {481: {0: {595: {0: {298: {0: {377: {0: {243: {0: {146: {0: 0, 1: 5}}, 1: {162: {0: 5, 1: 7}}}}, 1: 9}}, 1: {356: {0: 5, 1: 0}}}}, 1: {566: {0: {126: {0: 8, 1: 5}}, 1: {231: {0: 3, 1: {65: {0: 2, 1: 6}}}}}}}}, 1: {565: {0: {210: {0: 0, 1: {154: {0: 8, 1: 9}}}}, 1: {438: {0: {295: {0: {619: {0: {74: {0: 2, 1: 6}}, 1: {97: {0: 5, 1: 2}}}}, 1: {432: {0: {261: {0: 6, 1: 0}}, 1: {98: {0: 5, 1: 0}}}}}}, 1: 6}}}}}}, 1: {432: {0: {324: {0: {314: {0: {377: {0: {564: {0: 0, 1: 2}}, 1: {210: {0: 2, 1: 3}}}}, 1: {184: {0: 0, 1: 9}}}}, 1: {93: {0: {293: {0: 3, 1: 0}}, 1: 6}}}}, 1: {346: {0: {259: {0: {508: {0: 2, 1: {266: {0: 2, 1: {291: {0: 2, 1: 7}}}}}}, 1: {292: {0: 2, 1: 9}}}}, 1: {129: {0: {127: {0: 3, 1: 0}}, 1: 6}}}}}}}}, 1: {372: {0: {299: {0: {395: {0: {649: {0: 2, 1: {152: {0: 7, 1: 2}}}}, 1: {425: {0: {177: {0: 9, 1: {129: {0: 6, 1: 4}}}}, 1: 2}}}}, 1: {287: {0: {92: {0: 5, 1: 6}}, 1: {242: {0: 2, 1: 7}}}}}}, 1: {482: {0: {240: {0: {262: {0: 5, 1: 7}}, 1: {158: {0: {261: {0: 2, 1: {40: {0: 8, 1: 0}}}}, 1: {104: {0: 4, 1: 6}}}}}}, 1: {377: {0: {562: {0: 4, 1: 6}}, 1: {677: {0: {230: {0: 4, 1: 8}}, 1: 9}}}}}}}}}}}}, 1: {459: {0: {321: {0: {514: {0: {402: {0: {453: {0: {176: {0: {652: {0: {430: {0: {130: {0: 0, 1: 5}}, 1: {185: {0: 9, 1: 8}}}}, 1: 8}}, 1: {204: {0: 3, 1: {127: {0: 2, 1: 5}}}}}}, 1: 0}}, 1: {509: {0: 5, 1: {130: {0: 8, 1: 6}}}}}}, 1: {295: {0: {242: {0: {377: {0: 6, 1: {153: {0: 4, 1: {121: {0: 6, 1: 2}}}}}}, 1: {561: {0: {185: {0: 5, 1: 9}}, 1: {156: {0: {206: {0: 8, 1: 0}}, 1: 6}}}}}}, 1: {234: {0: {128: {0: 2, 1: 5}}, 1: 7}}}}}}, 1: {482: {0: {265: {0: {507: {0: {321: {0: {260: {0: 3, 1: 5}}, 1: 5}}, 1: {343: {0: 9, 1: {123: {0: 6, 1: 5}}}}}}, 1: 3}}, 1: {427: {0: {374: {0: {123: {0: 5, 1: 3}}, 1: {158: {0: 8, 1: 6}}}}, 1: {268: {0: {488: {0: {511: {0: {152: {0: 8, 1: 2}}, 1: 6}}, 1: {459: {0: {318: {0: 0, 1: 6}}, 1: 0}}}}, 1: {150: {0: 0, 1: 8}}}}}}}}}}, 1: {650: {0: {149: {0: {454: {0: {377: {0: {453: {0: {231: {0: {158: {0: 0, 1: 5}}, 1: 8}}, 1: {509: {0: {131: {0: 8, 1: 6}}, 1: 6}}}}, 1: {434: {0: 8, 1: {153: {0: 9, 1: 7}}}}}}, 1: {157: {0: {188: {0: 7, 1: 4}}, 1: {323: {0: 6, 1: 9}}}}}}, 1: {152: {0: {122: {0: 5, 1: 4}}, 1: 2}}}}, 1: {431: {0: {324: {0: {430: {0: {155: {0: 3, 1: 9}}, 1: {573: {0: {176: {0: 8, 1: 2}}, 1: 2}}}}, 1: 2}}, 1: {353: {0: {178: {0: {479: {0: {652: {0: 8, 1: 2}}, 1: {160: {0: {156: {0: 5, 1: 8}}, 1: 6}}}}, 1: {371: {0: 2, 1: {150: {0: 8, 1: 5}}}}}}, 1: 8}}}}}}}}}}, 1: {460: {0: {515: {0: {377: {0: {622: {0: {460: {0: {321: {0: {401: {0: {678: {0: {560: {0: {514: {0: 0, 1: {208: {0: {123: {0: 2, 1: 4}}, 1: 9}}}}, 1: 0}}, 1: {182: {0: 5, 1: {213: {0: 9, 1: 0}}}}}}, 1: {153: {0: {153: {0: 5, 1: 9}}, 1: {153: {0: 1, 1: 8}}}}}}, 1: {243: {0: {316: {0: {93: {0: 8, 1: 6}}, 1: {151: {0: 0, 1: 5}}}}, 1: 5}}}}, 1: {288: {0: {267: {0: {295: {0: 6, 1: {156: {0: 0, 1: 8}}}}, 1: {178: {0: 5, 1: 3}}}}, 1: {233: {0: 9, 1: {178: {0: 7, 1: {94: {0: 5, 1: 4}}}}}}}}}}, 1: 0}}, 1: {484: {0: {352: {0: {245: {0: 8, 1: 5}}, 1: {288: {0: 3, 1: {92: {0: 8, 1: 6}}}}}}, 1: {648: {0: {153: {0: 7, 1: 2}}, 1: 8}}}}}}, 1: {592: {0: {462: {0: {219: {0: {238: {0: {397: {0: {240: {0: 2, 1: {187: {0: {180: {0: 0, 1: 9}}, 1: 3}}}}, 1: {129: {0: 4, 1: 6}}}}, 1: {457: {0: {350: {0: {600: {0: 0, 1: 9}}, 1: 7}}, 1: {230: {0: 8, 1: 2}}}}}}, 1: 5}}, 1: {212: {0: {453: {0: {325: {0: {295: {0: {124: {0: 5, 1: 2}}, 1: {145: {0: 4, 1: 6}}}}, 1: {154: {0: 7, 1: {125: {0: 9, 1: 2}}}}}}, 1: 4}}, 1: {322: {0: {541: {0: {564: {0: {286: {0: {187: {0: 2, 1: 9}}, 1: 9}}, 1: {592: {0: {184: {0: 7, 1: 9}}, 1: 2}}}}, 1: {439: {0: 9, 1: 7}}}}, 1: {679: {0: {231: {0: {242: {0: 4, 1: 5}}, 1: 7}}, 1: {157: {0: 9, 1: 4}}}}}}}}}}, 1: {401: {0: {154: {0: {156: {0: {204: {0: 5, 1: 2}}, 1: {102: {0: {153: {0: 8, 1: 6}}, 1: 4}}}}, 1: {397: {0: 2, 1: {126: {0: 2, 1: 0}}}}}}, 1: {188: {0: {212: {0: {96: {0: {154: {0: 0, 1: 9}}, 1: 2}}, 1: 0}}, 1: {236: {0: 6, 1: {163: {0: 8, 1: 5}}}}}}}}}}}}, 1: {402: {0: {155: {0: {479: {0: {672: {0: {186: {0: {561: {0: {533: {0: {424: {0: {239: {0: 9, 1: 7}}, 1: {68: {0: 9, 1: 6}}}}, 1: {651: {0: {186: {0: 2, 1: 7}}, 1: 9}}}}, 1: {426: {0: {567: {0: {292: {0: {559: {0: {212: {0: 7, 1: 8}}, 1: {694: {0: {343: {0: 2, 1: 0}}, 1: 7}}}}, 1: 7}}, 1: 2}}, 1: {620: {0: {98: {0: {198: {0: 5, 1: 7}}, 1: 2}}, 1: 8}}}}}}, 1: {649: {0: {371: {0: {210: {0: {347: {0: {97: {0: 9, 1: 2}}, 1: 1}}, 1: {538: {0: 7, 1: 2}}}}, 1: {344: {0: 8, 1: {184: {0: 4, 1: {103: {0: 9, 1: 6}}}}}}}}, 1: {134: {0: 8, 1: 6}}}}}}, 1: {297: {0: {670: {0: {235: {0: {159: {0: 9, 1: 1}}, 1: 8}}, 1: {269: {0: {186: {0: 2, 1: 9}}, 1: 7}}}}, 1: 7}}}}, 1: {210: {0: {264: {0: {294: {0: {153: {0: {98: {0: 0, 1: 2}}, 1: 4}}, 1: 4}}, 1: {459: {0: {350: {0: 5, 1: {214: {0: 3, 1: {185: {0: 9, 1: 2}}}}}}, 1: {317: {0: 7, 1: {185: {0: 0, 1: {132: {0: 9, 1: 6}}}}}}}}}}, 1: {314: {0: {349: {0: {452: {0: {129: {0: 9, 1: 2}}, 1: {591: {0: 2, 1: {102: {0: 3, 1: 6}}}}}}, 1: {567: {0: {233: {0: {157: {0: 9, 1: 8}}, 1: 7}}, 1: 2}}}}, 1: {562: {0: {176: {0: 9, 1: 5}}, 1: {206: {0: {257: {0: 9, 1: 8}}, 1: 0}}}}}}}}}}, 1: {398: {0: {151: {0: {350: {0: {398: {0: {127: {0: {94: {0: {126: {0: 7, 1: 6}}, 1: 3}}, 1: 2}}, 1: 8}}, 1: {347: {0: {395: {0: {149: {0: 2, 1: {123: {0: 7, 1: 2}}}}, 1: 8}}, 1: 8}}}}, 1: 2}}, 1: {479: {0: {98: {0: 8, 1: 2}}, 1: {590: {0: {420: {0: 9, 1: 2}}, 1: {157: {0: {126: {0: 4, 1: 0}}, 1: 6}}}}}}}}}}, 1: {480: {0: {455: {0: {649: {0: {482: {0: {236: {0: {72: {0: 6, 1: 2}}, 1: 5}}, 1: {642: {0: {409: {0: 8, 1: {147: {0: {177: {0: 8, 1: 7}}, 1: 3}}}}, 1: {212: {0: {160: {0: 5, 1: {160: {0: 4, 1: 8}}}}, 1: 9}}}}}}, 1: 8}}, 1: {289: {0: {179: {0: {322: {0: {94: {0: 6, 1: 2}}, 1: {183: {0: 4, 1: {100: {0: 7, 1: 2}}}}}}, 1: {511: {0: {175: {0: 8, 1: 3}}, 1: {152: {0: 8, 1: 2}}}}}}, 1: {507: {0: {152: {0: 9, 1: 5}}, 1: 8}}}}}}, 1: {320: {0: {216: {0: {317: {0: 2, 1: {152: {0: 3, 1: 8}}}}, 1: {129: {0: {152: {0: 4, 1: 5}}, 1: 2}}}}, 1: {324: {0: {515: {0: 5, 1: {136: {0: 6, 1: 8}}}}, 1: {211: {0: 4, 1: 0}}}}}}}}}}}}}}}}, 1: {461: {0: {426: {0: {427: {0: {424: {0: {322: {0: {374: {0: {512: {0: {507: {0: {423: {0: {474: {0: {266: {0: {125: {0: {404: {0: {353: {0: {327: {0: {239: {0: 5, 1: {101: {0: {149: {0: 8, 1: 5}}, 1: 1}}}}, 1: 0}}, 1: {182: {0: 8, 1: 2}}}}, 1: {531: {0: {160: {0: {160: {0: 3, 1: 8}}, 1: 5}}, 1: {236: {0: 2, 1: {183: {0: 8, 1: 7}}}}}}}}, 1: {289: {0: {99: {0: {73: {0: 2, 1: 1}}, 1: {97: {0: 6, 1: 5}}}}, 1: 5}}}}, 1: {376: {0: {183: {0: 5, 1: {157: {0: 3, 1: 5}}}}, 1: {294: {0: 3, 1: {99: {0: 8, 1: 1}}}}}}}}, 1: {378: {0: {320: {0: 0, 1: {184: {0: 5, 1: 2}}}}, 1: {324: {0: {97: {0: 5, 1: 6}}, 1: 3}}}}}}, 1: {102: {0: 0, 1: 6}}}}, 1: {593: {0: {179: {0: {352: {0: 1, 1: 8}}, 1: {285: {0: 2, 1: 8}}}}, 1: 2}}}}, 1: {376: {0: 2, 1: {478: {0: {242: {0: {587: {0: {209: {0: 1, 1: 9}}, 1: {124: {0: {99: {0: 7, 1: 3}}, 1: 2}}}}, 1: {216: {0: 3, 1: 5}}}}, 1: {158: {0: 2, 1: 8}}}}}}}}, 1: {479: {0: {451: {0: {127: {0: {642: {0: 5, 1: {298: {0: {301: {0: 5, 1: 8}}, 1: {150: {0: 8, 1: 9}}}}}}, 1: {586: {0: {127: {0: 3, 1: 2}}, 1: {97: {0: 5, 1: 2}}}}}}, 1: {72: {0: 0, 1: 6}}}}, 1: {454: {0: {184: {0: {125: {0: 5, 1: 4}}, 1: {346: {0: 8, 1: 0}}}}, 1: {102: {0: {120: {0: 8, 1: 2}}, 1: 6}}}}}}}}, 1: {268: {0: {266: {0: {268: {0: 5, 1: {271: {0: {344: {0: {155: {0: {98: {0: 9, 1: 3}}, 1: 2}}, 1: 3}}, 1: 5}}}}, 1: {152: {0: {450: {0: {97: {0: {542: {0: {98: {0: 5, 1: {99: {0: 3, 1: 5}}}}, 1: {153: {0: 3, 1: 5}}}}, 1: {96: {0: 0, 1: 3}}}}, 1: {450: {0: {128: {0: 5, 1: 2}}, 1: {560: {0: 0, 1: 6}}}}}}, 1: {427: {0: {234: {0: {258: {0: 3, 1: 5}}, 1: {173: {0: 5, 1: 3}}}}, 1: {97: {0: 8, 1: 1}}}}}}}}, 1: {125: {0: {424: {0: {216: {0: {285: {0: {243: {0: {286: {0: {295: {0: 3, 1: 5}}, 1: {233: {0: {617: {0: {239: {0: 5, 1: 3}}, 1: 3}}, 1: 5}}}}, 1: 5}}, 1: {294: {0: {178: {0: 3, 1: {125: {0: 9, 1: 2}}}}, 1: {149: {0: 5, 1: 9}}}}}}, 1: {352: {0: {127: {0: {270: {0: 5, 1: 3}}, 1: 3}}, 1: 2}}}}, 1: {158: {0: {149: {0: {132: {0: 5, 1: 0}}, 1: {122: {0: 3, 1: 2}}}}, 1: {105: {0: 0, 1: 6}}}}}}, 1: 3}}}}}}, 1: {409: {0: {407: {0: 0, 1: 6}}, 1: {233: {0: {431: {0: 3, 1: {319: {0: 2, 1: {131: {0: 3, 1: 5}}}}}}, 1: {209: {0: {126: {0: 8, 1: 6}}, 1: {292: {0: 9, 1: 0}}}}}}}}}}, 1: {650: {0: {480: {0: {480: {0: {385: {0: {185: {0: {176: {0: 5, 1: 3}}, 1: {346: {0: {239: {0: 2, 1: {159: {0: 9, 1: 3}}}}, 1: 5}}}}, 1: {131: {0: {266: {0: 8, 1: 0}}, 1: {77: {0: 5, 1: 6}}}}}}, 1: {129: {0: {209: {0: {122: {0: 5, 1: {122: {0: 4, 1: 0}}}}, 1: 8}}, 1: {123: {0: 6, 1: 2}}}}}}, 1: {243: {0: {269: {0: {217: {0: {149: {0: {615: {0: {517: {0: 6, 1: {261: {0: {151: {0: 2, 1: 8}}, 1: 6}}}}, 1: {206: {0: {317: {0: {186: {0: {430: {0: 0, 1: 6}}, 1: 0}}, 1: 6}}, 1: {143: {0: 8, 1: 2}}}}}}, 1: {284: {0: 2, 1: 3}}}}, 1: {136: {0: 0, 1: 4}}}}, 1: {372: {0: {343: {0: 2, 1: {94: {0: 0, 1: 6}}}}, 1: {599: {0: 0, 1: {97: {0: {125: {0: 4, 1: 8}}, 1: 0}}}}}}}}, 1: {373: {0: {432: {0: {299: {0: {93: {0: {102: {0: 3, 1: 4}}, 1: 2}}, 1: 0}}, 1: {266: {0: 2, 1: 0}}}}, 1: {327: {0: {588: {0: {237: {0: 4, 1: {185: {0: 5, 1: 9}}}}, 1: {123: {0: {507: {0: {669: {0: 0, 1: 8}}, 1: {431: {0: {160: {0: 5, 1: 6}}, 1: 0}}}}, 1: {100: {0: {121: {0: 8, 1: 4}}, 1: 2}}}}}}, 1: 0}}}}}}}}, 1: {508: {0: {299: {0: {535: {0: {300: {0: 5, 1: {129: {0: 0, 1: 2}}}}, 1: {156: {0: {130: {0: {151: {0: 8, 1: 5}}, 1: 0}}, 1: 3}}}}, 1: {404: {0: {150: {0: 0, 1: 3}}, 1: {150: {0: {129: {0: 5, 1: 8}}, 1: {121: {0: 9, 1: 2}}}}}}}}, 1: 0}}}}}}, 1: {434: {0: 0, 1: {345: {0: {370: {0: {346: {0: {368: {0: {295: {0: 2, 1: 5}}, 1: {150: {0: 5, 1: 9}}}}, 1: {400: {0: {132: {0: 0, 1: 6}}, 1: {159: {0: 5, 1: 4}}}}}}, 1: {400: {0: 6, 1: {175: {0: 8, 1: 2}}}}}}, 1: {243: {0: {268: {0: {449: {0: {155: {0: 0, 1: 5}}, 1: {217: {0: 6, 1: 0}}}}, 1: {242: {0: 0, 1: {128: {0: 9, 1: 4}}}}}}, 1: {354: {0: {218: {0: {187: {0: {124: {0: 9, 1: 7}}, 1: 4}}, 1: 5}}, 1: {589: {0: 9, 1: 0}}}}}}}}}}}}, 1: {347: {0: {345: {0: {346: {0: {343: {0: 2, 1: {213: {0: {504: {0: {425: {0: {463: {0: {154: {0: 8, 1: 3}}, 1: 6}}, 1: {164: {0: 5, 1: 4}}}}, 1: {296: {0: 6, 1: {121: {0: 9, 1: 6}}}}}}, 1: {590: {0: {394: {0: {186: {0: {152: {0: 9, 1: 0}}, 1: 3}}, 1: 8}}, 1: {381: {0: {160: {0: 2, 1: 8}}, 1: {206: {0: 0, 1: 9}}}}}}}}}}, 1: {351: {0: {453: {0: {620: {0: 5, 1: {485: {0: 8, 1: 5}}}}, 1: {265: {0: {236: {0: {247: {0: 6, 1: 5}}, 1: {131: {0: 2, 1: 8}}}}, 1: {507: {0: 5, 1: {95: {0: {101: {0: 8, 1: 6}}, 1: 2}}}}}}}}, 1: {372: {0: {214: {0: 8, 1: 2}}, 1: 8}}}}}}, 1: {452: {0: {510: {0: {378: {0: {407: {0: {478: {0: 5, 1: {127: {0: {104: {0: 5, 1: 8}}, 1: 6}}}}, 1: {127: {0: {240: {0: 8, 1: 3}}, 1: {184: {0: 6, 1: 2}}}}}}, 1: {270: {0: {427: {0: {130: {0: 6, 1: 2}}, 1: {318: {0: 8, 1: 9}}}}, 1: {153: {0: 9, 1: 2}}}}}}, 1: {649: {0: {372: {0: {511: {0: {101: {0: {157: {0: 9, 1: 8}}, 1: 6}}, 1: {210: {0: 8, 1: 2}}}}, 1: {236: {0: {537: {0: {130: {0: 4, 1: 5}}, 1: {290: {0: 2, 1: 8}}}}, 1: {126: {0: 8, 1: 6}}}}}}, 1: 8}}}}, 1: {242: {0: {272: {0: 6, 1: {539: {0: {209: {0: {125: {0: 4, 1: 0}}, 1: {211: {0: 8, 1: 9}}}}, 1: {130: {0: 6, 1: 0}}}}}}, 1: {209: {0: {268: {0: {65: {0: 5, 1: 2}}, 1: 4}}, 1: {258: {0: {124: {0: 9, 1: 2}}, 1: {156: {0: 0, 1: {130: {0: 8, 1: 6}}}}}}}}}}}}}}, 1: {454: {0: {510: {0: {380: {0: {378: {0: {434: {0: 5, 1: {348: {0: {129: {0: 5, 1: 2}}, 1: {104: {0: {157: {0: 3, 1: 8}}, 1: 6}}}}}}, 1: {299: {0: {96: {0: 0, 1: {122: {0: 1, 1: 2}}}}, 1: 8}}}}, 1: {130: {0: {428: {0: {268: {0: {187: {0: 6, 1: 8}}, 1: {181: {0: 7, 1: 5}}}}, 1: {92: {0: 8, 1: 2}}}}, 1: {105: {0: 6, 1: 2}}}}}}, 1: {454: {0: {648: {0: {353: {0: {481: {0: {407: {0: 5, 1: {188: {0: 8, 1: 0}}}}, 1: {488: {0: 8, 1: 6}}}}, 1: {373: {0: {537: {0: {616: {0: 7, 1: {125: {0: {125: {0: 4, 1: 8}}, 1: 3}}}}, 1: 2}}, 1: {435: {0: {323: {0: {595: {0: 8, 1: {128: {0: 2, 1: 8}}}}, 1: {221: {0: 7, 1: 4}}}}, 1: 4}}}}}}, 1: 8}}, 1: {235: {0: {354: {0: 6, 1: {155: {0: {131: {0: 8, 1: 2}}, 1: {153: {0: 6, 1: 0}}}}}}, 1: {329: {0: {155: {0: 4, 1: 2}}, 1: 8}}}}}}}}, 1: {271: {0: {218: {0: 6, 1: {300: {0: {403: {0: {128: {0: 5, 1: 6}}, 1: {245: {0: 6, 1: {164: {0: 8, 1: 4}}}}}}, 1: {396: {0: {208: {0: 2, 1: 8}}, 1: {375: {0: {567: {0: 0, 1: 2}}, 1: 4}}}}}}}}, 1: {380: {0: {351: {0: {508: {0: {271: {0: 0, 1: 5}}, 1: {216: {0: 0, 1: 6}}}}, 1: {129: {0: {424: {0: 9, 1: 4}}, 1: {128: {0: 0, 1: 2}}}}}}, 1: {429: {0: {153: {0: {510: {0: {129: {0: {153: {0: 8, 1: 0}}, 1: 9}}, 1: 0}}, 1: {127: {0: 4, 1: 2}}}}, 1: {343: {0: {214: {0: {182: {0: {161: {0: 2, 1: 4}}, 1: 8}}, 1: 2}}, 1: {184: {0: {131: {0: 8, 1: 4}}, 1: 0}}}}}}}}}}}}}}}}}}, 1: {488: {0: {512: {0: {622: {0: {353: {0: {487: {0: {323: {0: {353: {0: {508: {0: {294: {0: {322: {0: {478: {0: 5, 1: {213: {0: {450: {0: {130: {0: 5, 1: {185: {0: {97: {0: 0, 1: 5}}, 1: 6}}}}, 1: {270: {0: {239: {0: 6, 1: 8}}, 1: 4}}}}, 1: {367: {0: {240: {0: 5, 1: 8}}, 1: {298: {0: 5, 1: 9}}}}}}}}, 1: {342: {0: {558: {0: {643: {0: {368: {0: {420: {0: {343: {0: 3, 1: 9}}, 1: {207: {0: 2, 1: 9}}}}, 1: {402: {0: 9, 1: 4}}}}, 1: 3}}, 1: {154: {0: {262: {0: 5, 1: 3}}, 1: {91: {0: 8, 1: 2}}}}}}, 1: {211: {0: {181: {0: 4, 1: 9}}, 1: {482: {0: {184: {0: {154: {0: 9, 1: 5}}, 1: 8}}, 1: 9}}}}}}}}, 1: {244: {0: {509: {0: {181: {0: {188: {0: {268: {0: {476: {0: {390: {0: {422: {0: 3, 1: {100: {0: {153: {0: 3, 1: 5}}, 1: 6}}}}, 1: {75: {0: {104: {0: 2, 1: 5}}, 1: 6}}}}, 1: 6}}, 1: {310: {0: 5, 1: {235: {0: 8, 1: 0}}}}}}, 1: {188: {0: 0, 1: 5}}}}, 1: 3}}, 1: {559: {0: {266: {0: {200: {0: 1, 1: 3}}, 1: {458: {0: {153: {0: 9, 1: 4}}, 1: 3}}}}, 1: {451: {0: 5, 1: 6}}}}}}, 1: {245: {0: {183: {0: {325: {0: 5, 1: 0}}, 1: {156: {0: {236: {0: 3, 1: 5}}, 1: {152: {0: 0, 1: 8}}}}}}, 1: 5}}}}}}, 1: {427: {0: {455: {0: {150: {0: {212: {0: 5, 1: 8}}, 1: 3}}, 1: {559: {0: {93: {0: {376: {0: 8, 1: 5}}, 1: 2}}, 1: {43: {0: 1, 1: 6}}}}}}, 1: {650: {0: {150: {0: {268: {0: 6, 1: 8}}, 1: 8}}, 1: {343: {0: {158: {0: 8, 1: 6}}, 1: 5}}}}}}}}, 1: {562: {0: {395: {0: {274: {0: {210: {0: {368: {0: {206: {0: 9, 1: 8}}, 1: {432: {0: {322: {0: 4, 1: 9}}, 1: {212: {0: 7, 1: 9}}}}}}, 1: {150: {0: 9, 1: 0}}}}, 1: {207: {0: 8, 1: 3}}}}, 1: {492: {0: {679: {0: 4, 1: {216: {0: {208: {0: {155: {0: 4, 1: 9}}, 1: 9}}, 1: 4}}}}, 1: {154: {0: {201: {0: 2, 1: 5}}, 1: 8}}}}}}, 1: {621: {0: {217: {0: 2, 1: {71: {0: 3, 1: 2}}}}, 1: {180: {0: 8, 1: {123: {0: {152: {0: 5, 1: 0}}, 1: 2}}}}}}}}}}, 1: {510: {0: {649: {0: {561: {0: {348: {0: {371: {0: {395: {0: {483: {0: {428: {0: {641: {0: {155: {0: {202: {0: 9, 1: 6}}, 1: 3}}, 1: 3}}, 1: {376: {0: {447: {0: 3, 1: 2}}, 1: {147: {0: 9, 1: 4}}}}}}, 1: {674: {0: {207: {0: {152: {0: 9, 1: 1}}, 1: {209: {0: 3, 1: 7}}}}, 1: {262: {0: 9, 1: 4}}}}}}, 1: {477: {0: {293: {0: {156: {0: 9, 1: 4}}, 1: {173: {0: 4, 1: 5}}}}, 1: 2}}}}, 1: {155: {0: {205: {0: {701: {0: {507: {0: 4, 1: 9}}, 1: {346: {0: 4, 1: 9}}}}, 1: {375: {0: 9, 1: {176: {0: 7, 1: 4}}}}}}, 1: {266: {0: {95: {0: {96: {0: 5, 1: 2}}, 1: 3}}, 1: 4}}}}}}, 1: {317: {0: {484: {0: {291: {0: {314: {0: {274: {0: 3, 1: 7}}, 1: {174: {0: 9, 1: 4}}}}, 1: {242: {0: {95: {0: {171: {0: 9, 1: 3}}, 1: 5}}, 1: 8}}}}, 1: {293: {0: {263: {0: {158: {0: 3, 1: 9}}, 1: {126: {0: 9, 1: 8}}}}, 1: {321: {0: 1, 1: {154: {0: {154: {0: 9, 1: 4}}, 1: 8}}}}}}}}, 1: {591: {0: {208: {0: {153: {0: {182: {0: 7, 1: 9}}, 1: 4}}, 1: 9}}, 1: {127: {0: 3, 1: {98: {0: 8, 1: 1}}}}}}}}}}, 1: {274: {0: {481: {0: {218: {0: {403: {0: {243: {0: {182: {0: 0, 1: 3}}, 1: 5}}, 1: {103: {0: 3, 1: 5}}}}, 1: {274: {0: 5, 1: 0}}}}, 1: {243: {0: {239: {0: 2, 1: {105: {0: {123: {0: 3, 1: 5}}, 1: 6}}}}, 1: {204: {0: 8, 1: 0}}}}}}, 1: {286: {0: 5, 1: 0}}}}}}, 1: {291: {0: 3, 1: {158: {0: {506: {0: {432: {0: {560: {0: {615: {0: 9, 1: {180: {0: 3, 1: 9}}}}, 1: {177: {0: {156: {0: 9, 1: 8}}, 1: 5}}}}, 1: {483: {0: {215: {0: 3, 1: {206: {0: 3, 1: 5}}}}, 1: {204: {0: 9, 1: 3}}}}}}, 1: {185: {0: 5, 1: 8}}}}, 1: {155: {0: 0, 1: 8}}}}}}}}, 1: {650: {0: {404: {0: {595: {0: {516: {0: 1, 1: {70: {0: 3, 1: 2}}}}, 1: {206: {0: 2, 1: {97: {0: 8, 1: 6}}}}}}, 1: {511: {0: {561: {0: 8, 1: {94: {0: 7, 1: 2}}}}, 1: {180: {0: 6, 1: 2}}}}}}, 1: {562: {0: {401: {0: {348: {0: {431: {0: {154: {0: 1, 1: 2}}, 1: 8}}, 1: 8}}, 1: {537: {0: 8, 1: {594: {0: 8, 1: 3}}}}}}, 1: 3}}}}}}}}, 1: {401: {0: {269: {0: {346: {0: {232: {0: 1, 1: {621: {0: {293: {0: {151: {0: 8, 1: 9}}, 1: 2}}, 1: {125: {0: {397: {0: 7, 1: 3}}, 1: {98: {0: 1, 1: 6}}}}}}}}, 1: {292: {0: {209: {0: {536: {0: {121: {0: {127: {0: 5, 1: 2}}, 1: 1}}, 1: 4}}, 1: {644: {0: {184: {0: {151: {0: 9, 1: 8}}, 1: 8}}, 1: {238: {0: {184: {0: 4, 1: 9}}, 1: 5}}}}}}, 1: {347: {0: {156: {0: 5, 1: 4}}, 1: {678: {0: 1, 1: {149: {0: 9, 1: 8}}}}}}}}}}, 1: {401: {0: {649: {0: {211: {0: {93: {0: 5, 1: 6}}, 1: {209: {0: {155: {0: 7, 1: 1}}, 1: 9}}}}, 1: {180: {0: {343: {0: 7, 1: {242: {0: 4, 1: 7}}}}, 1: {155: {0: {177: {0: 1, 1: 3}}, 1: {152: {0: 7, 1: 8}}}}}}}}, 1: {507: {0: {561: {0: {403: {0: {215: {0: 3, 1: {207: {0: {185: {0: 0, 1: 8}}, 1: 3}}}}, 1: {150: {0: 9, 1: 3}}}}, 1: {67: {0: 5, 1: 6}}}}, 1: {239: {0: 8, 1: 1}}}}}}}}, 1: {564: {0: {407: {0: {511: {0: {484: {0: {290: {0: 3, 1: {209: {0: {117: {0: 9, 1: 1}}, 1: 5}}}}, 1: {122: {0: 8, 1: 2}}}}, 1: {178: {0: {321: {0: {215: {0: {209: {0: {210: {0: 4, 1: {423: {0: 9, 1: {211: {0: 4, 1: 9}}}}}}, 1: 9}}, 1: 5}}, 1: {155: {0: {343: {0: {425: {0: {182: {0: {153: {0: 9, 1: 1}}, 1: 1}}, 1: {153: {0: 8, 1: 3}}}}, 1: {210: {0: 4, 1: 9}}}}, 1: 1}}}}, 1: {201: {0: 8, 1: {150: {0: 7, 1: 3}}}}}}}}, 1: {373: {0: {288: {0: {158: {0: 7, 1: 2}}, 1: {124: {0: {144: {0: 4, 1: 1}}, 1: 8}}}}, 1: {240: {0: 4, 1: {263: {0: {209: {0: 4, 1: {181: {0: 3, 1: 7}}}}, 1: {147: {0: 9, 1: 5}}}}}}}}}}, 1: {354: {0: {208: {0: 5, 1: {178: {0: 8, 1: {147: {0: 5, 1: 3}}}}}}, 1: 2}}}}}}}}, 1: {566: {0: {210: {0: {237: {0: {154: {0: {318: {0: {181: {0: {262: {0: 4, 1: {161: {0: {554: {0: {151: {0: 9, 1: 3}}, 1: 3}}, 1: {160: {0: 4, 1: 5}}}}}}, 1: {644: {0: {341: {0: 9, 1: {399: {0: 9, 1: 4}}}}, 1: {284: {0: {267: {0: 5, 1: {178: {0: {153: {0: 8, 1: 4}}, 1: 3}}}}, 1: 9}}}}}}, 1: {399: {0: {205: {0: {313: {0: {234: {0: {157: {0: 7, 1: 1}}, 1: 3}}, 1: {155: {0: 7, 1: 4}}}}, 1: {171: {0: {533: {0: 4, 1: 7}}, 1: {176: {0: 3, 1: 7}}}}}}, 1: {264: {0: {368: {0: {124: {0: {179: {0: 9, 1: 8}}, 1: 3}}, 1: {427: {0: {456: {0: {66: {0: 4, 1: 6}}, 1: 7}}, 1: {151: {0: 4, 1: 9}}}}}}, 1: {674: {0: 9, 1: 4}}}}}}}}, 1: {508: {0: {287: {0: {505: {0: {285: {0: {261: {0: {515: {0: 3, 1: {120: {0: 8, 1: 3}}}}, 1: {400: {0: {213: {0: 5, 1: 3}}, 1: {154: {0: 4, 1: 9}}}}}}, 1: {405: {0: {426: {0: 9, 1: 3}}, 1: {152: {0: 9, 1: 5}}}}}}, 1: {130: {0: 8, 1: 2}}}}, 1: {462: {0: {376: {0: {212: {0: 9, 1: {311: {0: 8, 1: 9}}}}, 1: {182: {0: 4, 1: {266: {0: 5, 1: 9}}}}}}, 1: {152: {0: {177: {0: 6, 1: 3}}, 1: 5}}}}}}, 1: {425: {0: {100: {0: 8, 1: 6}}, 1: 6}}}}}}, 1: {231: {0: {506: {0: 9, 1: {428: {0: {157: {0: {188: {0: 9, 1: 5}}, 1: 1}}, 1: 8}}}}, 1: {485: {0: {618: {0: {228: {0: {231: {0: 7, 1: 9}}, 1: {202: {0: 7, 1: 3}}}}, 1: {207: {0: 5, 1: 3}}}}, 1: {372: {0: 7, 1: {209: {0: {183: {0: 7, 1: 4}}, 1: {127: {0: 9, 1: 8}}}}}}}}}}}}, 1: {178: {0: {644: {0: {155: {0: 9, 1: {459: {0: {429: {0: {100: {0: {152: {0: {292: {0: 5, 1: 3}}, 1: 3}}, 1: 6}}, 1: {232: {0: 8, 1: {178: {0: 3, 1: 9}}}}}}, 1: {178: {0: {421: {0: {238: {0: {535: {0: 4, 1: 9}}, 1: {402: {0: 8, 1: {232: {0: {154: {0: 8, 1: 0}}, 1: 9}}}}}}, 1: {500: {0: 4, 1: 2}}}}, 1: {671: {0: {285: {0: 8, 1: {177: {0: 9, 1: 8}}}}, 1: {286: {0: 3, 1: 9}}}}}}}}}}, 1: {507: {0: {317: {0: {342: {0: {291: {0: 3, 1: {154: {0: {154: {0: 9, 1: 3}}, 1: 5}}}}, 1: 5}}, 1: {271: {0: 5, 1: {154: {0: {154: {0: 3, 1: 9}}, 1: 8}}}}}}, 1: {407: {0: 8, 1: {157: {0: 5, 1: 3}}}}}}}}, 1: {314: {0: {340: {0: {288: {0: 3, 1: {184: {0: {430: {0: {209: {0: 9, 1: 8}}, 1: {226: {0: 3, 1: {151: {0: 9, 1: 3}}}}}}, 1: 5}}}}, 1: {174: {0: 9, 1: 5}}}}, 1: {464: {0: {397: {0: {241: {0: {151: {0: 9, 1: 3}}, 1: 8}}, 1: {322: {0: {177: {0: 9, 1: 5}}, 1: {325: {0: 9, 1: 4}}}}}}, 1: {123: {0: 5, 1: 3}}}}}}}}}}, 1: {482: {0: {485: {0: {297: {0: {347: {0: {480: {0: {479: {0: {370: {0: 3, 1: {154: {0: 5, 1: 3}}}}, 1: {128: {0: 6, 1: 2}}}}, 1: {562: {0: 8, 1: {129: {0: 6, 1: 2}}}}}}, 1: {295: {0: {298: {0: {478: {0: {186: {0: {264: {0: 5, 1: {512: {0: {290: {0: 8, 1: 5}}, 1: 3}}}}, 1: {698: {0: 5, 1: 9}}}}, 1: {154: {0: 5, 1: 8}}}}, 1: {186: {0: 8, 1: 3}}}}, 1: {216: {0: {616: {0: {210: {0: 5, 1: 3}}, 1: 3}}, 1: 5}}}}}}, 1: {323: {0: {403: {0: 5, 1: {565: {0: {510: {0: {124: {0: 3, 1: 8}}, 1: 2}}, 1: {263: {0: 3, 1: 9}}}}}}, 1: {290: {0: 3, 1: {269: {0: 5, 1: {560: {0: 9, 1: {207: {0: 0, 1: 3}}}}}}}}}}}}, 1: {563: {0: {404: {0: 5, 1: 8}}, 1: {278: {0: 6, 1: 5}}}}}}, 1: {652: {0: {298: {0: {486: {0: {216: {0: {434: {0: 6, 1: {263: {0: {101: {0: 5, 1: 3}}, 1: 6}}}}, 1: {100: {0: 8, 1: 5}}}}, 1: {406: {0: 8, 1: 2}}}}, 1: {301: {0: {346: {0: {425: {0: {123: {0: 3, 1: 2}}, 1: 2}}, 1: {453: {0: {505: {0: 2, 1: 3}}, 1: {96: {0: 8, 1: 2}}}}}}, 1: {266: {0: 6, 1: {208: {0: 5, 1: 0}}}}}}}}, 1: {403: {0: {149: {0: {128: {0: 5, 1: 6}}, 1: 3}}, 1: {426: {0: {159: {0: 3, 1: 8}}, 1: 8}}}}}}}}}}}}, 1: {297: {0: {326: {0: {295: {0: {326: {0: {296: {0: 5, 1: {479: {0: {322: {0: {269: {0: {100: {0: {153: {0: 3, 1: 9}}, 1: 2}}, 1: 5}}, 1: {558: {0: 3, 1: {129: {0: {155: {0: 0, 1: 8}}, 1: 3}}}}}}, 1: {405: {0: 8, 1: 3}}}}}}, 1: {449: {0: {478: {0: {427: {0: {186: {0: 5, 1: 9}}, 1: {181: {0: 4, 1: {126: {0: 8, 1: 3}}}}}}, 1: 8}}, 1: {290: {0: {231: {0: 2, 1: 0}}, 1: {266: {0: 8, 1: 0}}}}}}}}, 1: {244: {0: {160: {0: {344: {0: {154: {0: {130: {0: {150: {0: 5, 1: {93: {0: 2, 1: 3}}}}, 1: {157: {0: 1, 1: 8}}}}, 1: {454: {0: {265: {0: 8, 1: 3}}, 1: 1}}}}, 1: 3}}, 1: {451: {0: {238: {0: {158: {0: 1, 1: {238: {0: 5, 1: 3}}}}, 1: {177: {0: {241: {0: 5, 1: 0}}, 1: 3}}}}, 1: {216: {0: 6, 1: {126: {0: 5, 1: 8}}}}}}}}, 1: {380: {0: {204: {0: 5, 1: {180: {0: 0, 1: 3}}}}, 1: {213: {0: 8, 1: 0}}}}}}}}, 1: {481: {0: {317: {0: {423: {0: {506: {0: 3, 1: {454: {0: {158: {0: 9, 1: 3}}, 1: 8}}}}, 1: {128: {0: {477: {0: {301: {0: {210: {0: 5, 1: 3}}, 1: 9}}, 1: {268: {0: 8, 1: 2}}}}, 1: 2}}}}, 1: {299: {0: {404: {0: {297: {0: 5, 1: 3}}, 1: {489: {0: 9, 1: {175: {0: 5, 1: 8}}}}}}, 1: {543: {0: {557: {0: {213: {0: {158: {0: 4, 1: 9}}, 1: 9}}, 1: {154: {0: 8, 1: 3}}}}, 1: {128: {0: 3, 1: {176: {0: 8, 1: 3}}}}}}}}}}, 1: {351: {0: {320: {0: {653: {0: 2, 1: 8}}, 1: {298: {0: 8, 1: 0}}}}, 1: {565: {0: {405: {0: {395: {0: {177: {0: 8, 1: {210: {0: 8, 1: 2}}}}, 1: {126: {0: 5, 1: 8}}}}, 1: {374: {0: 3, 1: {531: {0: {530: {0: {245: {0: 8, 1: 3}}, 1: {148: {0: 8, 1: 3}}}}, 1: 8}}}}}}, 1: {265: {0: {323: {0: 2, 1: {181: {0: 3, 1: {126: {0: 8, 1: 2}}}}}}, 1: {368: {0: {295: {0: {528: {0: 3, 1: 8}}, 1: 2}}, 1: 6}}}}}}}}}}}}, 1: {482: {0: {247: {0: 3, 1: {267: {0: {406: {0: {184: {0: 5, 1: 8}}, 1: 3}}, 1: {328: {0: {343: {0: {209: {0: 5, 1: {184: {0: 3, 1: 5}}}}, 1: 5}}, 1: 0}}}}}}, 1: {650: {0: {154: {0: {372: {0: {563: {0: {407: {0: {456: {0: 8, 1: 6}}, 1: {126: {0: 3, 1: 0}}}}, 1: {319: {0: {96: {0: 2, 1: 6}}, 1: {298: {0: {107: {0: {127: {0: 5, 1: 3}}, 1: 6}}, 1: 0}}}}}}, 1: {164: {0: {103: {0: {104: {0: 0, 1: 6}}, 1: 6}}, 1: 5}}}}, 1: {455: {0: {92: {0: {259: {0: 3, 1: 8}}, 1: 2}}, 1: {291: {0: {297: {0: {370: {0: 2, 1: {95: {0: 3, 1: 2}}}}, 1: {127: {0: 2, 1: 8}}}}, 1: {126: {0: 6, 1: 8}}}}}}}}, 1: {455: {0: {398: {0: {155: {0: {188: {0: {125: {0: 5, 1: 8}}, 1: 3}}, 1: 3}}, 1: {370: {0: {158: {0: 8, 1: 3}}, 1: 0}}}}, 1: {266: {0: {506: {0: {288: {0: 3, 1: 8}}, 1: {482: {0: {463: {0: 8, 1: {589: {0: {402: {0: 3, 1: 8}}, 1: 3}}}}, 1: {124: {0: {150: {0: 8, 1: 3}}, 1: 2}}}}}}, 1: {371: {0: {276: {0: {395: {0: {270: {0: 3, 1: 8}}, 1: 3}}, 1: 5}}, 1: {185: {0: {181: {0: 5, 1: 8}}, 1: {130: {0: {236: {0: 9, 1: 0}}, 1: 3}}}}}}}}}}}}}}}}}}, 1: {653: {0: {269: {0: {270: {0: {293: {0: {425: {0: {426: {0: {427: {0: {394: {0: {174: {0: {539: {0: {262: {0: 5, 1: {315: {0: 5, 1: 8}}}}, 1: {202: {0: {342: {0: {131: {0: 3, 1: 5}}, 1: 5}}, 1: 3}}}}, 1: 3}}, 1: {122: {0: 0, 1: 6}}}}, 1: {535: {0: {450: {0: {402: {0: {99: {0: 2, 1: 1}}, 1: 8}}, 1: {100: {0: {124: {0: 9, 1: 5}}, 1: 6}}}}, 1: {145: {0: 6, 1: 5}}}}}}, 1: {187: {0: {270: {0: {206: {0: 6, 1: {533: {0: {343: {0: {101: {0: 2, 1: 6}}, 1: {154: {0: 3, 1: 8}}}}, 1: {647: {0: 6, 1: {285: {0: 5, 1: {126: {0: 6, 1: 8}}}}}}}}}}, 1: {121: {0: 8, 1: 5}}}}, 1: {562: {0: 8, 1: {431: {0: {533: {0: {104: {0: 8, 1: 6}}, 1: 2}}, 1: 5}}}}}}}}, 1: 6}}, 1: {158: {0: {376: {0: {294: {0: {650: {0: {314: {0: {184: {0: 2, 1: {291: {0: {211: {0: 1, 1: {101: {0: 8, 1: 6}}}}, 1: {259: {0: 2, 1: 4}}}}}}, 1: {393: {0: {98: {0: {123: {0: 2, 1: 9}}, 1: 1}}, 1: {99: {0: 0, 1: 6}}}}}}, 1: {152: {0: {155: {0: 8, 1: 7}}, 1: {126: {0: 3, 1: 2}}}}}}, 1: {567: {0: {156: {0: {198: {0: 5, 1: 2}}, 1: 8}}, 1: {239: {0: 6, 1: 8}}}}}}, 1: {425: {0: {290: {0: {450: {0: {267: {0: {185: {0: 6, 1: 3}}, 1: {180: {0: 3, 1: 8}}}}, 1: {177: {0: 8, 1: 9}}}}, 1: 3}}, 1: {566: {0: {264: {0: {150: {0: {152: {0: 4, 1: 9}}, 1: 2}}, 1: 8}}, 1: {175: {0: 6, 1: 8}}}}}}}}, 1: {616: {0: {454: {0: {236: {0: {76: {0: 3, 1: 6}}, 1: 5}}, 1: {566: {0: {486: {0: {103: {0: {128: {0: 4, 1: 8}}, 1: 1}}, 1: 6}}, 1: 6}}}}, 1: {186: {0: {99: {0: 1, 1: 2}}, 1: 8}}}}}}}}, 1: {158: {0: {183: {0: {242: {0: {568: {0: {155: {0: 5, 1: 8}}, 1: {236: {0: 6, 1: 8}}}}, 1: {377: {0: {456: {0: {106: {0: 1, 1: 8}}, 1: {132: {0: 8, 1: 2}}}}, 1: {208: {0: 4, 1: 9}}}}}}, 1: {477: {0: {314: {0: {566: {0: {398: {0: {202: {0: {179: {0: 7, 1: 8}}, 1: 2}}, 1: 8}}, 1: {120: {0: 2, 1: 3}}}}, 1: 8}}, 1: {208: {0: 2, 1: {184: {0: 6, 1: 3}}}}}}}}, 1: {435: {0: {458: {0: {345: {0: {290: {0: 2, 1: 8}}, 1: {99: {0: 8, 1: 2}}}}, 1: 8}}, 1: {349: {0: {130: {0: 0, 1: 2}}, 1: {288: {0: {125: {0: 3, 1: 8}}, 1: {426: {0: {124: {0: 0, 1: 3}}, 1: 8}}}}}}}}}}}}, 1: {569: {0: {624: {0: {407: {0: {512: {0: {182: {0: {451: {0: {349: {0: {160: {0: 5, 1: 8}}, 1: {598: {0: 1, 1: 2}}}}, 1: {129: {0: {133: {0: 9, 1: 6}}, 1: 2}}}}, 1: {452: {0: 8, 1: {154: {0: {154: {0: 9, 1: 3}}, 1: 2}}}}}}, 1: {271: {0: {132: {0: 2, 1: 1}}, 1: {233: {0: 5, 1: 3}}}}}}, 1: {512: {0: {236: {0: {398: {0: {369: {0: 8, 1: {158: {0: 9, 1: 4}}}}, 1: 4}}, 1: {289: {0: 8, 1: 9}}}}, 1: {153: {0: 5, 1: 4}}}}}}, 1: {347: {0: {406: {0: {459: {0: {590: {0: {149: {0: {212: {0: 0, 1: 8}}, 1: 2}}, 1: 2}}, 1: {324: {0: {92: {0: 6, 1: 2}}, 1: 8}}}}, 1: {120: {0: 8, 1: 3}}}}, 1: {429: {0: {562: {0: {267: {0: 8, 1: {122: {0: {124: {0: 9, 1: 8}}, 1: 3}}}}, 1: 3}}, 1: {352: {0: 8, 1: {151: {0: 4, 1: 0}}}}}}}}}}, 1: {457: {0: {154: {0: {383: {0: {246: {0: {404: {0: {456: {0: {371: {0: 2, 1: {40: {0: {102: {0: 5, 1: 4}}, 1: 6}}}}, 1: 5}}, 1: {452: {0: {105: {0: 3, 1: 5}}, 1: {101: {0: 2, 1: 5}}}}}}, 1: 5}}, 1: {238: {0: 6, 1: 0}}}}, 1: {320: {0: {266: {0: 2, 1: {64: {0: 9, 1: 2}}}}, 1: {425: {0: {287: {0: 3, 1: {152: {0: 8, 1: 9}}}}, 1: {621: {0: 2, 1: {315: {0: 3, 1: {150: {0: 0, 1: 8}}}}}}}}}}}}, 1: {345: {0: {320: {0: {343: {0: 2, 1: {203: {0: 6, 1: 8}}}}, 1: {571: {0: {244: {0: {154: {0: {236: {0: {398: {0: 1, 1: 6}}, 1: 8}}, 1: {265: {0: 8, 1: 2}}}}, 1: {428: {0: {186: {0: 5, 1: 0}}, 1: 8}}}}, 1: {463: {0: 2, 1: {154: {0: 6, 1: 8}}}}}}}}, 1: {353: {0: {205: {0: {424: {0: {589: {0: {123: {0: 6, 1: 4}}, 1: 8}}, 1: {215: {0: 6, 1: {135: {0: 0, 1: 5}}}}}}, 1: {509: {0: 8, 1: {92: {0: 5, 1: 2}}}}}}, 1: {271: {0: {157: {0: 6, 1: 3}}, 1: {177: {0: 0, 1: 3}}}}}}}}}}}}}}, 1: {459: {0: {457: {0: {297: {0: {295: {0: {597: {0: {156: {0: 8, 1: {174: {0: 5, 1: 3}}}}, 1: {327: {0: 5, 1: 3}}}}, 1: {162: {0: {266: {0: 5, 1: 3}}, 1: 5}}}}, 1: {456: {0: {425: {0: {315: {0: {482: {0: {628: {0: 3, 1: 2}}, 1: 8}}, 1: {122: {0: {150: {0: 9, 1: 3}}, 1: 8}}}}, 1: {127: {0: {128: {0: 0, 1: 5}}, 1: 8}}}}, 1: {177: {0: 8, 1: 3}}}}}}, 1: {383: {0: {399: {0: {537: {0: {534: {0: {157: {0: 8, 1: {325: {0: {179: {0: 6, 1: 5}}, 1: 8}}}}, 1: 8}}, 1: {131: {0: 3, 1: 6}}}}, 1: {260: {0: {562: {0: 5, 1: {180: {0: 6, 1: {181: {0: 0, 1: 8}}}}}}, 1: {265: {0: 8, 1: {149: {0: 8, 1: 3}}}}}}}}, 1: {380: {0: {597: {0: 6, 1: 0}}, 1: {566: {0: {185: {0: {121: {0: {124: {0: 8, 1: 5}}, 1: 2}}, 1: 8}}, 1: {130: {0: 0, 1: 3}}}}}}}}}}, 1: 8}}}}}}, 1: {318: {0: {547: {0: {235: {0: {318: {0: {179: {0: 1, 1: {537: {0: {291: {0: {339: {0: {509: {0: {504: {0: 3, 1: {256: {0: 2, 1: 3}}}}, 1: {641: {0: {672: {0: {154: {0: {238: {0: {671: {0: 2, 1: {150: {0: 7, 1: 3}}}}, 1: 7}}, 1: {290: {0: {179: {0: 8, 1: 2}}, 1: {670: {0: 1, 1: 7}}}}}}, 1: {179: {0: 1, 1: 7}}}}, 1: {122: {0: 3, 1: 2}}}}}}, 1: {68: {0: 8, 1: 6}}}}, 1: {149: {0: 1, 1: 7}}}}, 1: {341: {0: {312: {0: {152: {0: {203: {0: {207: {0: 8, 1: {480: {0: 7, 1: {213: {0: 2, 1: 7}}}}}}, 1: {430: {0: 2, 1: {145: {0: {174: {0: 2, 1: 3}}, 1: 7}}}}}}, 1: 2}}, 1: {155: {0: 6, 1: 9}}}}, 1: {180: {0: {69: {0: 4, 1: 6}}, 1: 8}}}}}}}}, 1: {350: {0: {181: {0: {514: {0: {369: {0: {242: {0: {317: {0: {699: {0: {398: {0: {183: {0: 1, 1: {101: {0: 8, 1: 5}}}}, 1: {367: {0: 8, 1: {158: {0: 4, 1: 8}}}}}}, 1: {183: {0: 7, 1: 9}}}}, 1: {185: {0: {476: {0: {290: {0: 4, 1: 1}}, 1: {125: {0: {154: {0: {208: {0: 5, 1: 9}}, 1: 4}}, 1: {121: {0: 1, 1: 2}}}}}}, 1: {345: {0: {158: {0: 8, 1: {315: {0: {212: {0: 8, 1: 5}}, 1: {101: {0: 1, 1: 6}}}}}}, 1: 1}}}}}}, 1: {158: {0: {534: {0: {134: {0: 8, 1: 4}}, 1: {506: {0: {185: {0: 8, 1: 5}}, 1: 5}}}}, 1: 8}}}}, 1: {530: {0: {426: {0: {155: {0: 5, 1: 1}}, 1: {208: {0: {132: {0: {672: {0: 4, 1: 1}}, 1: 6}}, 1: {156: {0: 9, 1: {154: {0: 8, 1: 4}}}}}}}}, 1: {127: {0: 5, 1: 4}}}}}}, 1: {426: {0: {320: {0: 5, 1: {646: {0: {127: {0: 2, 1: 4}}, 1: 8}}}}, 1: {316: {0: {256: {0: 6, 1: 2}}, 1: {448: {0: 8, 1: {106: {0: 0, 1: 6}}}}}}}}}}, 1: {539: {0: {126: {0: {161: {0: 8, 1: 5}}, 1: {345: {0: 6, 1: {99: {0: {124: {0: 4, 1: 1}}, 1: 2}}}}}}, 1: {535: {0: 1, 1: {348: {0: {559: {0: {73: {0: 2, 1: 6}}, 1: 8}}, 1: 1}}}}}}}}, 1: {370: {0: {294: {0: {453: {0: {213: {0: {368: {0: {181: {0: 8, 1: {152: {0: 4, 1: 8}}}}, 1: {126: {0: 4, 1: 3}}}}, 1: {157: {0: {398: {0: 8, 1: {155: {0: 9, 1: 8}}}}, 1: 8}}}}, 1: {458: {0: 8, 1: {153: {0: 6, 1: 8}}}}}}, 1: {156: {0: {479: {0: {212: {0: {186: {0: 7, 1: 4}}, 1: {260: {0: {188: {0: 9, 1: 5}}, 1: 8}}}}, 1: {458: {0: {291: {0: 1, 1: {612: {0: 1, 1: 8}}}}, 1: {103: {0: {182: {0: 7, 1: 2}}, 1: 6}}}}}}, 1: {270: {0: {293: {0: {127: {0: {128: {0: 1, 1: 6}}, 1: 3}}, 1: {264: {0: 8, 1: 1}}}}, 1: 8}}}}}}, 1: {513: {0: {558: {0: {369: {0: {212: {0: {265: {0: {99: {0: 4, 1: 6}}, 1: {210: {0: 9, 1: 4}}}}, 1: {182: {0: 9, 1: 8}}}}, 1: {700: {0: {301: {0: {581: {0: 4, 1: 1}}, 1: {214: {0: 7, 1: 9}}}}, 1: 9}}}}, 1: {265: {0: {186: {0: 5, 1: {105: {0: 2, 1: 1}}}}, 1: {263: {0: {103: {0: 0, 1: 6}}, 1: 8}}}}}}, 1: {295: {0: {188: {0: 6, 1: 2}}, 1: {243: {0: {209: {0: {106: {0: 9, 1: 6}}, 1: 4}}, 1: {263: {0: 3, 1: 0}}}}}}}}}}}}}}, 1: {318: {0: {341: {0: {509: {0: {268: {0: {454: {0: {592: {0: {211: {0: {182: {0: {181: {0: 1, 1: 2}}, 1: 8}}, 1: 7}}, 1: {673: {0: 1, 1: {154: {0: {154: {0: 7, 1: 1}}, 1: 3}}}}}}, 1: {214: {0: {429: {0: {233: {0: {150: {0: 8, 1: 3}}, 1: 2}}, 1: {345: {0: {149: {0: 3, 1: 2}}, 1: 7}}}}, 1: {593: {0: 8, 1: 3}}}}}}, 1: {537: {0: {266: {0: {475: {0: 3, 1: 2}}, 1: {480: {0: {203: {0: 8, 1: 3}}, 1: 7}}}}, 1: {623: {0: {267: {0: {511: {0: {341: {0: 7, 1: {181: {0: 4, 1: 9}}}}, 1: 3}}, 1: {540: {0: 7, 1: 2}}}}, 1: {374: {0: 8, 1: {176: {0: 2, 1: 3}}}}}}}}}}, 1: {155: {0: {238: {0: {322: {0: {125: {0: {372: {0: 2, 1: {258: {0: 2, 1: 7}}}}, 1: 1}}, 1: {348: {0: 8, 1: {98: {0: 2, 1: 6}}}}}}, 1: {624: {0: {531: {0: {428: {0: {232: {0: 7, 1: 2}}, 1: {311: {0: {315: {0: {367: {0: 7, 1: {258: {0: 7, 1: 2}}}}, 1: {178: {0: {155: {0: 8, 1: 1}}, 1: 7}}}}, 1: {177: {0: 2, 1: 9}}}}}}, 1: {459: {0: {156: {0: {175: {0: 7, 1: 2}}, 1: 1}}, 1: 2}}}}, 1: {397: {0: 2, 1: 3}}}}}}, 1: {598: {0: {646: {0: {316: {0: {316: {0: 2, 1: 7}}, 1: 8}}, 1: {232: {0: {233: {0: 2, 1: 8}}, 1: {294: {0: 3, 1: {208: {0: 2, 1: 8}}}}}}}}, 1: 2}}}}}}, 1: {652: {0: {211: {0: {367: {0: {230: {0: 2, 1: 8}}, 1: {99: {0: {209: {0: 4, 1: 9}}, 1: 6}}}}, 1: {189: {0: {560: {0: {406: {0: {702: {0: 9, 1: 7}}, 1: {177: {0: 3, 1: 7}}}}, 1: {182: {0: 9, 1: 8}}}}, 1: 8}}}}, 1: {708: {0: {146: {0: {162: {0: 8, 1: {134: {0: 4, 1: 8}}}}, 1: 5}}, 1: {204: {0: {212: {0: 9, 1: 7}}, 1: {179: {0: 4, 1: 8}}}}}}}}}}, 1: {649: {0: {293: {0: {461: {0: {680: {0: {123: {0: 8, 1: {122: {0: 1, 1: 8}}}}, 1: {149: {0: 1, 1: 4}}}}, 1: {236: {0: {237: {0: 2, 1: 8}}, 1: {97: {0: 3, 1: 6}}}}}}, 1: {233: {0: {480: {0: {235: {0: 8, 1: {213: {0: 1, 1: 8}}}}, 1: {180: {0: 9, 1: {121: {0: {123: {0: 8, 1: 4}}, 1: 2}}}}}}, 1: {593: {0: {205: {0: 9, 1: 2}}, 1: {151: {0: {157: {0: 7, 1: 8}}, 1: {458: {0: 8, 1: 1}}}}}}}}}}, 1: 8}}}}}}, 1: {654: {0: {342: {0: {319: {0: {342: {0: {510: {0: {507: {0: {539: {0: {509: {0: 3, 1: 2}}, 1: {241: {0: 1, 1: {184: {0: {200: {0: 2, 1: 7}}, 1: {123: {0: 3, 1: 6}}}}}}}}, 1: {454: {0: 3, 1: {707: {0: 2, 1: 3}}}}}}, 1: 2}}, 1: {184: {0: {568: {0: {367: {0: {179: {0: {13: {0: 7, 1: 6}}, 1: 8}}, 1: {152: {0: 9, 1: 4}}}}, 1: 6}}, 1: {544: {0: 8, 1: {231: {0: 2, 1: 8}}}}}}}}, 1: {399: {0: {513: {0: {263: {0: {101: {0: 2, 1: 6}}, 1: 8}}, 1: {482: {0: {185: {0: {65: {0: 1, 1: 2}}, 1: 5}}, 1: {378: {0: {72: {0: 2, 1: 6}}, 1: {324: {0: 5, 1: {67: {0: {122: {0: 3, 1: 8}}, 1: 6}}}}}}}}}}, 1: {520: {0: {297: {0: {177: {0: {475: {0: {646: {0: 6, 1: 1}}, 1: {72: {0: {123: {0: 5, 1: 4}}, 1: 6}}}}, 1: 2}}, 1: {508: {0: {122: {0: 8, 1: 3}}, 1: {591: {0: {102: {0: 2, 1: 3}}, 1: {96: {0: 6, 1: 2}}}}}}}}, 1: {203: {0: {283: {0: 2, 1: 8}}, 1: 3}}}}}}}}, 1: {542: {0: {207: {0: {404: {0: 6, 1: 4}}, 1: {405: {0: {235: {0: 8, 1: {100: {0: {150: {0: 0, 1: 3}}, 1: 6}}}}, 1: {155: {0: 9, 1: 8}}}}}}, 1: {238: {0: {186: {0: 6, 1: {124: {0: 9, 1: 2}}}}, 1: {396: {0: {155: {0: 9, 1: 2}}, 1: {90: {0: 8, 1: 6}}}}}}}}}}, 1: {513: {0: {541: {0: {512: {0: {483: {0: 3, 1: {508: {0: {288: {0: 3, 1: 8}}, 1: 8}}}}, 1: {178: {0: 8, 1: {175: {0: 3, 1: 2}}}}}}, 1: {456: {0: {125: {0: {173: {0: 8, 1: 7}}, 1: 1}}, 1: {150: {0: {125: {0: {153: {0: 4, 1: 0}}, 1: 6}}, 1: 2}}}}}}, 1: {490: {0: {343: {0: {595: {0: {153: {0: 3, 1: 8}}, 1: {592: {0: {126: {0: {151: {0: 7, 1: 4}}, 1: {122: {0: 1, 1: 2}}}}, 1: {290: {0: 2, 1: 3}}}}}}, 1: {382: {0: 8, 1: {122: {0: {126: {0: 6, 1: 5}}, 1: 0}}}}}}, 1: {542: {0: {405: {0: {569: {0: 8, 1: 3}}, 1: 8}}, 1: {267: {0: {400: {0: 8, 1: {124: {0: 0, 1: 3}}}}, 1: {205: {0: 1, 1: {123: {0: 3, 1: 2}}}}}}}}}}}}}}}}, 1: {655: {0: {572: {0: {211: {0: {266: {0: {597: {0: {397: {0: {349: {0: {565: {0: {282: {0: 2, 1: 7}}, 1: {318: {0: {123: {0: 4, 1: 8}}, 1: 7}}}}, 1: {402: {0: {396: {0: {185: {0: 7, 1: 8}}, 1: {242: {0: {98: {0: 4, 1: 6}}, 1: {190: {0: 9, 1: 5}}}}}}, 1: {268: {0: {233: {0: {98: {0: 4, 1: 6}}, 1: {184: {0: 2, 1: 9}}}}, 1: 4}}}}}}, 1: {507: {0: 4, 1: {269: {0: {538: {0: {104: {0: 9, 1: 4}}, 1: 6}}, 1: {261: {0: 5, 1: 4}}}}}}}}, 1: {567: {0: {155: {0: 8, 1: 3}}, 1: {184: {0: 6, 1: {98: {0: 9, 1: 8}}}}}}}}, 1: {378: {0: {246: {0: {620: {0: {262: {0: {180: {0: 4, 1: 8}}, 1: 2}}, 1: {453: {0: {340: {0: 1, 1: 7}}, 1: {157: {0: 7, 1: 4}}}}}}, 1: {187: {0: 5, 1: 8}}}}, 1: {505: {0: {264: {0: 4, 1: {263: {0: {376: {0: 9, 1: 4}}, 1: {187: {0: 9, 1: {234: {0: 9, 1: 7}}}}}}}}, 1: {214: {0: {257: {0: 8, 1: 2}}, 1: {210: {0: 0, 1: 5}}}}}}}}}}, 1: {536: {0: {378: {0: {652: {0: {456: {0: {161: {0: 9, 1: 5}}, 1: {454: {0: {212: {0: 8, 1: {182: {0: 8, 1: 9}}}}, 1: {155: {0: 2, 1: 4}}}}}}, 1: {430: {0: 3, 1: 8}}}}, 1: {212: {0: {321: {0: {293: {0: 4, 1: {124: {0: 7, 1: 8}}}}, 1: {234: {0: 8, 1: {671: {0: 9, 1: {183: {0: 9, 1: 4}}}}}}}}, 1: {483: {0: 9, 1: {490: {0: {702: {0: {216: {0: {256: {0: {234: {0: {456: {0: 4, 1: 9}}, 1: 9}}, 1: {184: {0: 9, 1: 7}}}}, 1: {270: {0: 8, 1: 9}}}}, 1: {209: {0: 7, 1: 8}}}}, 1: {234: {0: 4, 1: {213: {0: 9, 1: 2}}}}}}}}}}}}, 1: {489: {0: {532: {0: {370: {0: 8, 1: {185: {0: 4, 1: 7}}}}, 1: {183: {0: 5, 1: 2}}}}, 1: {410: {0: {209: {0: {74: {0: {96: {0: 2, 1: 3}}, 1: 6}}, 1: {652: {0: 2, 1: 9}}}}, 1: {184: {0: 0, 1: 6}}}}}}}}}}, 1: {651: {0: {654: {0: {269: {0: {540: {0: {461: {0: {518: {0: {489: {0: 8, 1: {181: {0: 5, 1: 6}}}}, 1: {615: {0: 6, 1: {101: {0: {101: {0: 8, 1: 1}}, 1: 6}}}}}}, 1: {464: {0: {261: {0: {99: {0: 1, 1: 6}}, 1: 8}}, 1: {258: {0: 4, 1: 2}}}}}}, 1: 6}}, 1: {382: {0: {208: {0: {184: {0: {620: {0: 8, 1: {232: {0: 5, 1: 8}}}}, 1: {156: {0: {236: {0: 9, 1: 4}}, 1: {96: {0: {97: {0: 6, 1: 3}}, 1: 2}}}}}}, 1: {234: {0: 6, 1: 2}}}}, 1: {421: {0: 6, 1: {243: {0: {103: {0: 4, 1: 6}}, 1: 0}}}}}}}}, 1: {542: {0: {321: {0: {210: {0: 4, 1: {300: {0: 9, 1: 4}}}}, 1: {150: {0: {314: {0: {705: {0: 4, 1: 9}}, 1: {201: {0: 7, 1: 4}}}}, 1: {122: {0: 8, 1: 1}}}}}}, 1: {629: {0: {213: {0: {127: {0: 5, 1: 6}}, 1: 4}}, 1: {349: {0: 6, 1: {495: {0: 8, 1: 2}}}}}}}}}}, 1: {372: {0: {704: {0: {522: {0: 8, 1: 2}}, 1: {182: {0: 7, 1: 9}}}}, 1: {591: {0: {185: {0: {406: {0: {234: {0: {163: {0: 8, 1: 4}}, 1: {126: {0: 9, 1: 6}}}}, 1: 4}}, 1: {510: {0: 9, 1: {242: {0: 8, 1: 9}}}}}}, 1: {409: {0: {272: {0: 2, 1: {221: {0: 8, 1: 5}}}}, 1: 0}}}}}}}}}}, 1: {540: {0: {399: {0: {294: {0: {182: {0: {209: {0: {154: {0: {429: {0: {286: {0: 4, 1: 8}}, 1: 4}}, 1: 8}}, 1: {427: {0: {188: {0: 9, 1: 8}}, 1: 8}}}}, 1: 8}}, 1: {374: {0: {486: {0: {565: {0: {429: {0: {183: {0: 5, 1: 8}}, 1: {186: {0: 9, 1: {160: {0: 3, 1: 2}}}}}}, 1: {183: {0: {212: {0: 7, 1: 9}}, 1: 1}}}}, 1: {156: {0: 7, 1: {155: {0: 1, 1: 7}}}}}}, 1: {705: {0: {213: {0: {260: {0: {234: {0: {147: {0: 7, 1: 8}}, 1: 1}}, 1: {228: {0: 8, 1: 7}}}}, 1: 8}}, 1: {182: {0: 9, 1: {180: {0: 3, 1: 8}}}}}}}}}}, 1: {620: {0: {238: {0: {182: {0: {200: {0: {429: {0: 8, 1: 4}}, 1: 7}}, 1: {153: {0: {182: {0: 9, 1: 3}}, 1: {126: {0: 5, 1: 8}}}}}}, 1: {541: {0: {177: {0: 8, 1: 3}}, 1: {465: {0: {405: {0: {426: {0: {153: {0: 1, 1: 4}}, 1: {294: {0: 8, 1: {152: {0: 9, 1: 8}}}}}}, 1: {160: {0: 9, 1: 8}}}}, 1: {202: {0: 4, 1: 3}}}}}}}}, 1: {378: {0: {431: {0: {129: {0: 8, 1: 0}}, 1: 5}}, 1: {538: {0: 8, 1: 3}}}}}}}}, 1: 8}}}}}}}}}}\n" + ] + } + ], + "source": [ + "tree = createTree((trainDataArr, trainLabelArr))\n", + "print('tree is:', tree)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(testDataList, tree):\n", + " '''\n", + " 预测标签\n", + " :param testDataList:样本\n", + " :param tree: 决策树\n", + " :return: 预测结果\n", + " ''' \n", + " while True: #死循环,直到找到一个有效地分类\n", + " (key, value), = tree.items() #例如{73: {0: {74:6}}}看起来节点很多,但是对于字典的最顶层来说,只有73一个key,其余都是value\n", + " \n", + " if type(tree[key]).__name__ == 'dict': #如果当前的value是字典,说明还需要遍历下去\n", + " \n", + " dataVal = testDataList[key] # 0,1\n", + " del testDataList[key]\n", + " #获取目前所在节点的feature值,需要在样本中删除该feature\n", + " #因为在创建树的过程中,feature的索引值永远是对于当时剩余的feature来设置的\n", + " #所以需要不断地删除已经用掉的特征,保证索引相对位置的一致性\n", + " \n", + " tree = value[dataVal] #将tree更新为其子节点的字典\n", + " \n", + " if type(tree).__name__ == 'int': #如果当前节点的子节点的值是int,就直接返回该int值\n", + " return tree #返回该节点值,也就是分类值\n", + " #例如{403: {0: 7, 1: {297:7}},dataVal=0\n", + " #此时上一行tree = value[dataVal],将tree定位到了7,而7不再是一个字典了,这里就可以直接返回7了,\n", + " #如果tree = value[1],那就是一个新的子节点,需要继续遍历下去\n", + "\n", + " else: #如果当前value不是字典,那就返回分类值\n", + " return value " + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.8549\n" + ] + } + ], + "source": [ + "errorCnt = 0\n", + "for i in range(len(testDataArr)):\n", + " if testLabelArr[i] != predict(testDataArr[i], tree):\n", + " errorCnt += 1\n", + "accuracy = 1 - errorCnt / len(testDataArr)\n", + "print(accuracy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "oldHeight": 238, + "position": { + "height": "40px", + "left": "767px", + "right": "20px", + "top": "-3px", + "width": "458px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "varInspector_section_display": "none", + "window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/04-logistic.ipynb b/04-logistic.ipynb new file mode 100644 index 0000000..db5c06c --- /dev/null +++ b/04-logistic.ipynb @@ -0,0 +1,177 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n", + "start read file\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from minst import loadData\n", + "\n", + "trainData, trainLabel = loadData(fileName='D:/Jupyter/mnist_train.csv',label_bin=1)\n", + "testData, testLabel = loadData(fileName='D:/Jupyter/mnist_test.csv',label_bin=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def logisticRegression(trainData, trainLabel, iter = 200,h=0.001):\n", + " '''\n", + " 逻辑斯蒂回归训练过程\n", + " :param trainDataList:训练集\n", + " :param trainLabelList: 标签集\n", + " :param iter: 迭代次数\n", + " :param h: 学习率\n", + " :return: 学习得的w\n", + " '''\n", + " for i in range(len(trainData)):\n", + " trainData[i].append(1) #在每一行最后添加一个1 (作为b)\n", + " trainData = np.array(trainData)\n", + " \n", + " w = np.zeros(trainData.shape[1]) #初始化w ((784+1),1)\n", + " \n", + " for i in range(iter): #迭代iter次进行随机梯度下降\n", + " for j in range(trainData.shape[0]): # 6000 随机梯度下降 \n", + " wx = np.dot(w,trainData[j])\n", + " xi = trainData[j]\n", + " yi = trainLabel[j]\n", + " w += h * (xi * yi - (np.exp(wx) * xi) / ( 1 + np.exp(wx)))\n", + " return w\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:22: RuntimeWarning: invalid value encountered in multiply\n", + "C:\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:22: RuntimeWarning: invalid value encountered in true_divide\n" + ] + } + ], + "source": [ + "w = logisticRegression(trainData, trainLabel)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(w, x):\n", + " '''\n", + " 预测标签\n", + " :param w:训练过程中学到的w\n", + " :param x: 要预测的样本\n", + " :return: 预测结果\n", + " '''\n", + " wx = np.dot(w, x)\n", + " P1 = np.exp(wx) / (1 + np.exp(wx))\n", + " if P1 >= 0.5:\n", + " return 1\n", + " return 0" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.902\n" + ] + } + ], + "source": [ + "for i in range(len(testData)):\n", + " testData[i].append(1)\n", + " \n", + "errorCnt = 0\n", + "for i in range(len(testData)):\n", + " if testLabel[i] != predict(w,testData[i]):\n", + " errorCnt += 1\n", + "accuracy = 1 - errorCnt / len(testData)\n", + "print(accuracy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "position": { + "height": "350px", + "left": "1368px", + "right": "20px", + "top": "54px", + "width": "446px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/05-MaxEntropy.ipynb b/05-MaxEntropy.ipynb new file mode 100644 index 0000000..d2a36af --- /dev/null +++ b/05-MaxEntropy.ipynb @@ -0,0 +1,378 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from minst import loadData\n", + "from collections import defaultdict\n", + "\n", + "trainData, trainLabel = loadData(fileName='D:/Jupyter/mnist_train.csv',label_bin=1)\n", + "testData, testLabel = loadData(fileName='D:/Jupyter/mnist_test.csv',label_bin=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " '''\n", + " 最大熵类\n", + " '''\n", + " def __init__(self, trainDataList, trainLabelList, testDataList, testLabelList):\n", + " '''\n", + " 各参数初始化\n", + " '''\n", + " self.trainDataList = trainDataList #训练数据集\n", + " self.trainLabelList = trainLabelList #训练标签集\n", + " self.testDataList = testDataList #测试数据集\n", + " self.testLabelList = testLabelList #测试标签集\n", + " self.featureNum = len(trainDataList[0]) #特征数量\n", + " self.N = len(trainDataList) #总训练集长度\n", + " self.n = 0 #训练集中(xi,y)对数量\n", + " self.M = 10000 #测试集长度\n", + " self.fixy = self.calc_fixy() #所有(x, y)对出现的次数\n", + " self.w = [0] * self.n #Pw(y|x)中的w\n", + " self.xy2idDict, self.id2xyDict = self.createSearchDict() #(x, y)->id和id->(x, y)的搜索字典\n", + " self.Ep_xy = self.calcEp_xy() #Ep_xy期望值\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " 计算特征函数$f(x, y)$关于模型$P(Y|X)$与经验分布$\\tilde{P}(X, Y)$的期望值,即“6.2.2 最大熵模型的定义”中第二个期望(83页最上方的期望):\n", + " $$E_{P}(f)=\\sum_{x, y} \\tilde{P}(x) P(y | x) f(x, y)$$" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def calcEpxy(self): \n", + " Epxy = [0] * self.n #初始化期望存放列表,对于每一个xy对都有一个期望 \n", + "\n", + " for i in range(self.N): #对于每一个样本进行遍历 60000 \n", + " Pwxy = [0] * 2 #初始化公式中的P(y|x)列表 X表示是一个样本的全部特征,x表示单个特征,这里是全部特征的一个样本\n", + " \n", + " Pwxy[0] = self.calcPwy_x(self.trainDataList[i], 0) #计算P(y = 0 } X) \n", + " Pwxy[1] = self.calcPwy_x(self.trainDataList[i], 1) #计算P(y = 1 } X)\n", + " \n", + " for feature in range(self.featureNum): #784\n", + " for y in range(2): \n", + " if (self.trainDataList[i][feature], y) in self.fixy[feature]:\n", + " id = self.xy2idDict[feature][(self.trainDataList[i][feature], y)]\n", + " Epxy[id] += (1 / self.N) * Pwxy[y]\n", + " return Epxy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "计算特征函数$f(x, y)$关于经验分布$\\tilde{P}(X, Y)$的期望值。即“6.2.2 最大熵的定义”中第一个期望(82页最下方那个式子):\n", + "$$\n", + "E_{\\tilde{P}}(f)=\\sum_{x, y} \\tilde{P}(x, y) f(x, y)\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def calcEp_xy(self):\n", + " Ep_xy = [0] * self.n #初始化Ep_xy列表,长度为n\n", + "\n", + " for feature in range(self.featureNum):\n", + " for (x, y) in self.fixy[feature]: #遍历每个特征中的(x, y)\n", + " id = self.xy2idDict[feature][(x, y)] #获得其id\n", + " Ep_xy[id] = self.fixy[feature][(x, y)] / self.N #将计算得到的Ep_xy写入对应的位置中fixy中存放所有对在训练集中出现过的次数,处于训练集总长度N就是概率了\n", + "\n", + " return Ep_xy #返回期望" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " 设置xy搜多id字典。这里的x指的是单个的特征,而不是某个样本,因此将特征存入字典时也需要存入这是第几个特征这一信息,这是为了后续的方便,否则会乱套。比如说一个样本X = (0, 1, 1) label =(1)。\n", + "生成的标签对有(0, 1), (1, 1), (1, 1),三个(x,y)对并不能判断属于哪个特征的,后续就没法往下写。\n", + "不可能通过(1, 1)就能找到对应的id,因为对于(1, 1),字典中有多重映射。\n", + "所以在生成字典的时总共生成了特征数个字典,例如在mnist中样本有784维特征,所以生成784个字典,属于不同特征的xy存入不同特征内的字典中,使其不会混淆。" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def createSearchDict(self):\n", + " '''\n", + " 创建查询字典\n", + " xy2idDict:通过(x,y)对找到其id,所有出现过的xy对都有一个id\n", + " id2xyDict:通过id找到对应的(x,y)对\n", + " '''\n", + "\n", + " xy2idDict = [{} for i in range(self.featureNum)] #初始化id到xy对的字典。[{}, {}, {}, {},……, {}, {}, {}]\n", + " id2xyDict = {} #设置索引,其实就是最后的id\n", + " index = 0\n", + "\n", + " for feature in range(self.featureNum):\n", + " #对出现过的每一个(x, y)对进行遍历 \n", + " for (x, y) in self.fixy[feature]: #fixy:内部存放特征数目个字典,对于遍历的每一个特征,单独读取对应字典内的(x, y)对\n", + " xy2idDict[feature][(x, y)] = index #将该(x, y)对存入字典中,要注意存入时通过[feature]指定了存入哪个特征内部的字典 \n", + " id2xyDict[index] = (x, y) #同时在id->xy字典中写入id号,val为(x, y)对\n", + " index += 1\n", + "\n", + " return xy2idDict, id2xyDict" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{}, {(3, 1): 2}, {}, {}, {}, {}, {}, {}, {}, {}]\n" + ] + } + ], + "source": [ + "xy2idDict = [{} for i in range(10)]\n", + "xy2idDict[1][(3,1)]=2\n", + "print(xy2idDict)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{2: (3, 1), 3: (4, 0)}\n" + ] + } + ], + "source": [ + "id2xyDict = {}\n", + "id2xyDict[2] = (3, 1)\n", + "id2xyDict[3] = (4, 0)\n", + "print(id2xyDict)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "计算(x, y)在训练集中出现过的次数" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def calc_fixy(self):\n", + " fixyDict = [defaultdict(int) for i in range(self.featureNum)]#建立特征数目个字典,属于不同特征的(x, y)对存入不同的字典中\n", + " #defaultdict(int)---字典里key不存在时返回0\n", + " \n", + " for i in range(len(self.trainDataList)): \n", + " for j in range(self.featureNum): #遍历样本中所有特征 \n", + " fixyDict[j][(self.trainDataList[i][j], self.trainLabelList[i])] += 1 #将出现过的(x, y)对放入字典中并计数值加1 \n", + " for i in fixyDict: \n", + " self.n += len(i) #对整个大字典进行计数,判断去重后还有多少(x, y)对,写入n\n", + " \n", + " return fixyDict #返回大字典" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[defaultdict(int, {}),\n", + " defaultdict(int, {(3, 1): 5}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {}),\n", + " defaultdict(int, {})]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from collections import defaultdict\n", + "fixyDict = [defaultdict(int) for i in range(10)]\n", + "fixyDict[1][(3,1)]=5\n", + "fixyDict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "计算“6.23 最大熵模型的学习” 式6.22\n", + "$$\n", + "P_{w}(y | x)=\\frac{1}{Z_{w}(x)} \\exp \\left(\\sum_{i=1}^{n} w_{i} f_{i}(x, y)\\right)\n", + "$$\n", + "$$\n", + "Z_{w}(x)=\\sum_{y} \\exp \\left(\\sum_{i=1}^{n} w_{i} f_{i}(x, y)\\right)\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt: \n", + " def calcPwy_x(self, X, y):\n", + " '''\n", + " :param X: 要计算的样本X(一个包含全部特征的样本)\n", + " :param y: 该样本的标签\n", + " :return: 计算得到的Pw(Y|X)\n", + " '''\n", + " numerator = 0 #分子\n", + " Z = 0 #分母\n", + "\n", + " for i in range(self.featureNum): #对每个特征进行遍历\n", + " if (X[i], y) in self.xy2idDict[i]: #如果该(xi,y)对在训练集中出现过 \n", + " index = self.xy2idDict[i][(X[i], y)] #在xy->id字典中指定当前特征i,以及(x, y)对:(X[i], y),读取其id\n", + " #分子是wi和fi(x,y)的连乘再求和,最后指数,由于当(x, y)存在时fi(x,y)为1,因为xy对肯定存在,所以直接就是1\n", + " #对于分子来说,就是n个wi累加,最后再指数就可以了.因为有n个w,所以通过id将w与xy绑定,前文的两个搜索字典中的id就是用在这里\n", + " numerator += self.w[index] #同时计算其他一种标签y时候的分子,下面的z并不是全部的分母,再加上上式的分子以后才是完整的分母,即z = z + numerator\n", + "\n", + " if (X[i], 1-y) in self.xy2idDict[i]: \n", + " index = self.xy2idDict[i][(X[i], 1-y)] \n", + " Z += self.w[index]\n", + "\n", + " numerator = np.exp(numerator) #计算分子的指数\n", + " Z = np.exp(Z) + numerator #计算分母的z\n", + "\n", + " return numerator / Z #返回Pw(y|x)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def maxEntropyTrain(self, iter = 500):\n", + " \n", + " for i in range(iter): #设置迭代次数寻找最优解 \n", + " Epxy = self.calcEpxy() #计算“6.2.3 最大熵模型的学习”中的第二个期望(83页最上方哪个) \n", + " sigmaList = [0] * self.n #使用的是IIS,所以设置sigma列表 \n", + " for j in range(self.n): #对于所有的n进行一次遍历 \n", + " sigmaList[j] = (1 / self.M) * np.log(self.Ep_xy[j] / Epxy[j]) #依据“6.3.1 改进的迭代尺度法” 式6.34计算 \n", + " self.w = [self.w[i] + sigmaList[i] for i in range(self.n)] #按照算法6.1步骤二中的(b)更新w\n", + " #单次迭代结束" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "class maxEnt:\n", + " def predict(self, X):\n", + " '''\n", + " 预测标签\n", + " :param X:要预测的样本\n", + " :return: 预测值\n", + " ''' \n", + " result = [0] * 2 #因为y只有0和1,所有建立两个长度的概率列表 \n", + " for i in range(2): #循环计算两个概率 \n", + " result[i] = self.calcPwy_x(X, i) #计算样本x的标签为i的概率\n", + " #返回标签\n", + " #max(result):找到result中最大的那个概率值\n", + " #result.index(max(result)):通过最大的那个概率值再找到其索引,索引是0就返回0,1就返回1\n", + " return result.index(max(result))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/06-SVM.ipynb b/06-SVM.ipynb new file mode 100644 index 0000000..ea6c0c5 --- /dev/null +++ b/06-SVM.ipynb @@ -0,0 +1,1361 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 一、SVM原理推导" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1、函数间隔(Function margin)与几何间隔(geometrical margin)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "定义超平面:$$w^{*} \\cdot x+b^{*}=0$$\n", + "\n", + "对点$(x_i,y_i)$:\n", + "\n", + "函数间隔(Function margin):$$\\hat{\\gamma}_{i}=y_{i}\\left(w \\cdot x_{i}+b\\right)$$\n", + "\n", + "几何间隔(geometrical margin):$$\\gamma_{i}=y_{i}\\left(\\frac{w \\cdot x_{i}+{b}}{\\|w\\|}\\right)$$\n", + "\n", + "两者关系:\n", + "$$\n", + "\\gamma=\\frac{\\hat{\\gamma}}{\\|w\\|}\n", + "$$\n", + "令超平面对于所有点$(x_i,y_i)$的函数间隔最小:\n", + "$$\n", + "\\hat{\\gamma}=\\min _{l=1, \\cdots, N} \\hat{\\gamma}_{i}\n", + "$$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2、间隔最大化" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "令几何间隔最大(间隔最小点的间隔最大):\n", + "$$\n", + "\\max _{w, b} \\gamma\n", + "$$\n", + "约束条件:超平面关于每个训练样本的几何间隔至少是$\\gamma$\n", + "$$\n", + "s.t. \\quad y_{i}\\left(\\frac{w\\cdot x_{i}+b}{\\|w\\|}\\right) \\geqslant \\gamma, \\quad i=1,2, \\cdots, N\n", + "$$\n", + "根据几何间隔与函数间隔关系,可改写为:\n", + "$$\n", + "\\begin{array}{cc}{\\max _{w, b}} & {\\frac{\\hat{\\gamma}}{\\|w\\|}} \\\\ {\\text { s.t. }} & {y_{i}\\left(w \\cdot x_{i}+b\\right) \\geqslant \\hat{\\gamma}, \\quad i=1,2, \\cdots, N}\\end{array}\n", + "$$\n", + "\n", + "\n", + "因为函数间隔$\\hat{\\gamma}$与$w、b$等比改变,所以对优化问题无影响,故令$\\hat{\\gamma}=1$:\n", + "$$\n", + "\\begin{array}{ll}{\\min _{w, b}} & {\\frac{1}{2}\\|w\\|^{2}} \\\\ {\\text { s.t. }} & {y_{i}\\left(w \\cdot x_{i}+b\\right)-1 \\geqslant 0, \\quad i=1,2, \\cdots, N}\\end{array}\n", + "$$\n", + "注:决定超平面划分的只有到超平面最近的几个点(即支持向量support vector)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3、Lagrange function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "补充:KKT条件:\n", + "\n", + "$\\min f(x)$\n", + "\n", + "$s.t. g_i(x) \\leqslant 0, i=1,\\cdots,k$\n", + "\n", + "构造拉格朗日函数:$L(x,\\alpha)= f(x) + \\sum \\alpha_i \\cdot g_i(x)$\n", + "\n", + "(1) 拉格朗日函数对各参数求导=0\n", + "\n", + "(2) $\\alpha_i\\geqslant 0$\n", + "\n", + "(3) $\\alpha_i \\cdot g_i(x) = 0$\n", + "\n", + "(4) $g_i(x) \\leqslant 0$ (原始约束条件)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 引入拉格朗日乘子$\\alpha_i$后:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "$$\n", + "L(w, b, \\alpha)=\\frac{1}{2}\\|w\\|^{2}-\\sum_{i=1}^{N} \\alpha_{i} y_{i}\\left(w \\cdot x_{i}+b\\right)+\\sum_{i=1}^{N} \\alpha_{i}\n", + "$$\n", + "即优化问题改为:\n", + "$$\n", + "\\min _{w, b}\\max _{a} L(w, b, \\alpha)\n", + "$$\n", + "因为$\\min \\max f(x)\\geqslant \\max \\min f(x)$,所以等价于\n", + "$$\n", + "\\max _{a} \\min _{w, b} L(w, b, \\alpha)\n", + "$$\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### (1)求$\\min _{w, b} L(w, b, \\alpha)$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "分别对$w、b$求偏导并令其等于0:\n", + "$$\n", + "\\begin{array}{l}{\\nabla_{w} L(w, b, \\alpha)=w-\\sum_{i=1}^{N} \\alpha_{i} y_{i} x_{i}=0} \\\\ {\\nabla_{b} L(w, b, \\alpha)=\\sum_{i=1}^{N} \\alpha_{i} y_{i}=0}\\end{array}\n", + "$$\n", + "得到:\n", + "$$\n", + "\\begin{array}{l}{w=\\sum_{i=1}^{N} \\alpha_{i} y_{i} x_{i}} \\\\ {\\sum_{i=1}^{N} \\alpha_{i} y_{i}=0}\\end{array}\n", + "$$\n", + "将两项带回原式:\n", + "$$\n", + "\\begin{aligned} L(w, b, \\alpha) &=\\frac{1}{2} \\sum_{i=1}^{N} \\sum_{j=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{j}\\left(x_{i} \\cdot x_{j}\\right)-\\sum_{i=1}^{N} \\alpha_{i} y_{i}\\left(\\left(\\sum_{j=1}^{N} \\alpha_{j} y_{j} x_{j}\\right) \\cdot x_{i}+b\\right)+\\sum_{i=1}^{N} \\alpha_{i} \\\\ &=-\\frac{1}{2} \\sum_{i=1}^{N} \\sum_{I=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{j}\\left(x_{i} \\cdot x_{j}\\right)+\\sum_{i=1}^{N} \\alpha_{i} \\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### (2)求 $\\min _{w, b} L(w, b, \\alpha)$对$\\alpha$极大" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{array}{l}\\max _\\alpha \\quad -\\frac{1}{2} \\sum_{i=1}^{N} \\sum_{j=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{j}\\left(x_{i} \\cdot x_{j}\\right)+\\sum_{i=1}^{N} \\alpha_{i}\\\\ {\\text { s.t. }\\quad \\quad \\sum_{i=1}^{N} \\alpha_{l} y_{i}=0} \\\\ {\\alpha_{i} \\geqslant 0, \\quad i=1,2, \\cdots, N}\\end{array}\n", + "$$\n", + "改为极小问题:\n", + "$$\n", + "\\min _{\\alpha} \\frac{1}{2} \\sum_{i=1}^{N} \\sum_{j=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{j}\\left(x_{i} \\cdot x_{j}\\right)-\\sum_{i=1}^{N} \\alpha_{i}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4、松弛变量 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "某些噪音不能满足函数间隔大于1的约束条件,因此引入松弛变量$\\xi_i \\geqslant 0$,约束条件变为:\n", + "$$\n", + "y_{i}\\left(w \\cdot x_{i}+b\\right) \\geqslant 1-\\xi_{i}\n", + "$$\n", + "$$\n", + "\\xi_{i} \\geqslant 0, \\quad i=1,2, \\cdots, N\n", + "$$\n", + "目标函数变为,其中C为惩罚参数:\n", + "$$\n", + "\\frac{1}{2}\\|w\\|^{2}+C \\sum_{i=1}^{N} \\xi_{i}\n", + "$$\n", + "加入松弛变量后拉格朗日函数为:\n", + "$$\n", + "L(w, b, \\xi, \\alpha, \\mu) \\equiv \\frac{1}{2}\\|w\\|^{2}+C \\sum_{i=1}^{N} \\xi_{i}-\\sum_{i=1}^{N} \\alpha_{i}\\left(y_{i}\\left(w \\cdot x_{i}+b\\right)-1+\\xi_{i}\\right)-\\sum_{i=1}^{N} \\mu_{i} \\xi_{i}\n", + "$$\n", + "同上求对偶问题后,最终解为:(具体推导见书P110-111)\n", + "$$\n", + "\\min _{a} \\frac{1}{2} \\sum_{i=1}^{N} \\sum_{j=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{j}\\left(x_{i} \\cdot x_{j}\\right)-\\sum_{i=1}^{N} \\alpha_{t}\n", + "$$\n", + "$$\n", + "s.t. \\quad \\sum_{i=1}^{N} \\alpha_{i} y_{i}=0\n", + "$$\n", + "$$\n", + "0 \\leqslant \\alpha_{i} \\leqslant C, \\quad i=1,2, \\cdots, N\n", + "$$\n", + "\n", + "\n", + "\n", + "之后求得满足约束并找到最优解的$\\alpha$即可,之后通过$w$的计算公式根据$\\alpha$求得,而$w$知道后将$w$带入$wx+b=0$也可求得$b$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5、核函数 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1、将线性不可分的数据升维\n", + "\n", + "2、减少计算量\n", + "我们看min后面这个式子,其中α和y都是标量,直接计算就可以,唯一让人难受的是xi与xj的点积,它是向量之间的点积,同时前面有求和项,也就是说在计算过程中是需要计算任意两个向量之间的点积的。这里就引申出一个问题,例如在Mnist数据集中,训练集有6万个样本,也就是6万个向量,现在计算机速度越来越快了,6万*6万个标量还行,算起来没多久,可是如果是向量呢?Mnist中每个向量由784维,也就是说单独的两个向量点积就需要784次运算,再加上6万个样本,其实速度是非常慢的。\n", + "\n", + "高斯核函数\n", + "$$\n", + "K(x, z)=\\exp \\left(-\\frac{\\|x-z\\|^{2}}{2 \\sigma^{2}}\\right) \\quad (式5.1)\n", + "$$\n", + "$$\n", + "W(\\alpha)=\\frac{1}{2} \\sum_{i=1}^{N} \\sum_{j=1}^{N} \\alpha_{i} \\alpha_{j} y_{i} y_{i} K\\left(x, z\\right)-\\sum_{i=1}^{N} \\alpha_{i}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6、SMO " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "参考:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html\n", + "\n", + "$\\alpha$是一个仍然存在的未知数,但其他好像我们目前都是可以得到的。那我们怎么求解这个问题的最优解呢?有一个定理是这样的:如果一个问题是最优解,那么它一定满足KKT条件,如果不满足,一定不是最优解,这是充分必要条件。所以这里引发出了一个思考,如果我们找到了最优解,那$\\alpha$的取值一定是满足KKT条件地。所以需要不断得去调整$\\alpha$的值,直到最后所有的$\\alpha$都满足$KKT$条件,这时候我一定得到了最优解。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "假设选择2个变量$\\alpha_{1}、\\alpha_{2}$,其它变量$\\alpha_{(3,\\cdots,N)}$为固定值:\n", + "$$\n", + "\\min _{\\alpha_{1}, \\alpha_{2}} \\quad W\\left(\\alpha_{1}, \\alpha_{2}\\right)=\\frac{1}{2} K_{11} \\alpha_{1}^{2}+\\frac{1}{2} K_{22} \\alpha_{2}^{2}+y_{1} y_{2} K_{12} \\alpha_{1} \\alpha_{2}-\\left(\\alpha_{1}+\\alpha_{2}\\right)+y_{1} \\alpha_{1} \\sum_{i=3}^{N} y_{i} \\alpha_{i} K_{i 1}+y_{2} \\alpha_{2} \\sum_{i=3}^{N} y_{i} \\alpha_{i} K_{i 2}+constant\\quad(6.1)\n", + "$$\n", + "(已省略不含$\\alpha_{1}、\\alpha_{2}$的常数项)\n", + "$$\n", + "\\begin{array}{c}{\\text { s.t. } \\quad \\alpha_{1} y_{1}+\\alpha_{2} y_{2}=-\\sum_{i=3}^{N} y_{i} \\alpha_{i}=\\zeta} \\\\ {0 \\leqslant \\alpha_{i} \\leqslant C, \\quad i=1,2}\\end{array}\n", + "$$\n", + "由第一个约束项可得:$\\alpha_{1}=\\frac{\\xi-\\alpha_2 y_2}{y_1}$,用$\\alpha_2$表示$\\alpha_1$\n", + "\n", + "故$ W(\\alpha_{1}, \\alpha_{2})$可看做关于$\\alpha_2$的一元二次函数,通过对$W$进行求导等于0可以得到$\\alpha_2$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Image of Yaktocat](http://images.cnblogs.com/cnblogs_com/jerrylead/201103/201103182043119717.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "对于$\\alpha_{1} y_{1}+\\alpha_{2} y_{2}=\\zeta$:\n", + "\n", + "当$y_1\\neq y_2$,即$y_1、y_2$分别为-1,1时:$\\alpha_1-\\alpha_2=k$\n", + "\n", + "当$y_1=y_2$,即$y_1、y_2$同为-1,1时:$\\alpha_1+\\alpha_2=k$\n", + "\n", + "如图所示:$\\alpha_1、\\alpha_2$既要在矩形方框内,也要在直线上,因此:\n", + "$$\n", + "L \\leqslant \\alpha_{2} \\leqslant H\n", + "$$\n", + "当$y_1\\neq y_2$,\n", + "$$\n", + "L=\\max \\left(0, \\alpha_{2}-\\alpha_{1}\\right) \\quad H=\\min \\left(C, C+\\alpha_{2}-\\alpha_{1}\\right)\n", + "$$\n", + "当$y_1=y_2$,\n", + "$$\n", + "L=\\max \\left(0, \\alpha_{2}+\\alpha_{1}-C\\right) \\quad H=\\min \\left(C, \\alpha_{2}+\\alpha_{1}\\right)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### SMO变量的选择方法 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "前文已知:\n", + "$$\n", + "{w}=\\sum_{i=1}^{N} y_{i} \\alpha_{i} {x}_{i}, \\quad b={w} \\cdot {x}_{k}-y_{k}\n", + "$$\n", + "$$\n", + "g(x)={w} \\cdot {x}-b\n", + "$$\n", + "所以:\n", + "$$\n", + "g(x)=\\sum_{j=1}^{N} y_{j} \\alpha_{j} K\\left({x}, {z}\\right)-b \\quad (6.6)\n", + "$$\n", + "$E_i$为预测值与真实值之差:\n", + "$$\n", + "E_{i}=g\\left(x_{i}\\right)-y_{i}=\\left(\\sum_{j=1}^{N} \\alpha_{j} y_{j} K\\left(x_{j}, x_{i}\\right)+b\\right)-y_{i}, \\quad i=1,2\n", + "$$\n", + "对于式(6.1):\n", + "$$\n", + "\\min _{\\alpha_{1}, \\alpha_{2}} \\quad W\\left(\\alpha_{1}, \\alpha_{2}\\right)=\\frac{1}{2} K_{11} \\alpha_{1}^{2}+\\frac{1}{2} K_{22} \\alpha_{2}^{2}+y_{1} y_{2} K_{12} \\alpha_{1} \\alpha_{2}-\\left(\\alpha_{1}+\\alpha_{2}\\right)+y_{1} \\alpha_{1} \\sum_{i=3}^{N} y_{i} \\alpha_{i} K_{i 1}+y_{2} \\alpha_{2} \\sum_{i=3}^{N} y_{i} \\alpha_{i} K_{i 2}+constant\n", + "$$\n", + "引进记号:\n", + "$$\n", + "v_{i}=\\sum_{j=3}^{N} \\alpha_{j} y_{j} K\\left(x_{i}, x_{j}\\right)=g\\left(x_{i}\\right)-\\sum_{j=1}^{2} \\alpha_{j} y_{j} K\\left(x_{i}, x_{j}\\right)-b, \\quad i=1,2\n", + "$$\n", + "带入式(6.1):\n", + "$$\n", + "\\begin{aligned} W\\left(\\alpha_{1}, \\alpha_{2}\\right)=& \\frac{1}{2} K_{11} \\alpha_{1}^{2}+\\frac{1}{2} K_{22} \\alpha_{2}^{2}+y_{1} y_{2} K_{12} \\alpha_{1} \\alpha_{2} -\\left(\\alpha_{1}+\\alpha_{2}\\right)+y_{1} v_{1} \\alpha_{1}+y_{2} v_{2} \\alpha_{2} \\end{aligned}\\quad(6.2)\n", + "$$\n", + "由$\\alpha_{1}=\\frac{\\xi-\\alpha_2 y_2}{y_1},y_i^{2}=1$:\n", + "$$\n", + "\\alpha_{1}=\\left(\\xi-y_{2} \\alpha_{2}\\right) y_{1}\n", + "$$\n", + "带入式(6.2):\n", + "$$\n", + "\\begin{aligned} W\\left(\\alpha_{2}\\right)=& \\frac{1}{2} K_{11}\\left(\\zeta-\\alpha_{2} y_{2}\\right)^{2}+\\frac{1}{2} K_{22} \\alpha_{2}^{2}+y_{2} K_{12}\\left(\\zeta-\\alpha_{2} y_{2}\\right) \\alpha_{2} -\\left(\\zeta-\\alpha_{2} y_{2}\\right) y_{1}-\\alpha_{2}+v_{1}\\left(5-\\alpha_{2} y_{2}\\right)+y_{2} v_{2} \\alpha_{2} \\end{aligned}\n", + "$$\n", + "对$\\alpha_2$求导=0:\n", + "$$\n", + "\\begin{aligned} \\frac{\\partial W}{\\partial \\alpha_{2}}= K_{11} \\alpha_{2}+K_{22} \\alpha_{2}-2 K_{12} \\alpha_{2}-K_{11}\\zeta y_2+K_{12} \\zeta y_{2}+y_{1} y_{2}-1-v_{1} y_{2}+y_{2} v_{2}=0 \\end{aligned}\n", + "$$\n", + "化简:\n", + "$$\n", + "\\left(K_{11}+K_{22}-2 K_{12}\\right) \\alpha_{2}=y_{2}\\left(y_{2}-y_{1}+\\zeta K_{11}-\\zeta K_{12}+v_{1}-v_{2}\\right)\n", + "$$\n", + "\n", + "$$\n", + "=y_{2}\\left[y_{2}-y_{1}+\\xi K_{11}-\\xi K_{12}+\\left(g\\left(x_{1}\\right)-\\sum_{j=1}^{2} y_{j} \\alpha_{j} K_{1 j}-b\\right)\\right.-\\left(g\\left(x_{2}\\right)-\\sum_{j=1}^{2} y_{j} \\alpha_{j} K_{2 j}-b\\right)]\n", + "$$\n", + "将$\\zeta=\\alpha_{1}^{\\text { old }} y_{1}+\\alpha_{2}^{\\text { old }} y_{2}$代入:\n", + "$$\n", + "\\begin{aligned}\\left(K_{11}+K_{22}-2 K_{12}\\right) \\alpha_{2}^{\\text { new, unclipped }} &=y_{2}\\left(\\left(K_{11}+K_{22}-2 K_{12}\\right) \\alpha_{2}^{\\text { old }} y_{2}+y_{2}-y_{1}+g\\left(x_{1}\\right)-g\\left(x_{2}\\right)\\right) \\\\ &=\\left(K_{11}+K_{22}-2 K_{12}\\right) \\alpha_{2}^{\\text { old }}+y_{2}\\left(E_{1}-E_{2}\\right) \\end{aligned}\n", + "$$\n", + "令$\\eta=K_{11}+K_{22}-2 K_{12},即||K(x_1)-K(x_2)||^{2}$:\n", + "$$\n", + "\\alpha_{2}^{\\mathrm{new}, \\mathrm{unclipped}}=\\alpha_{2}^{\\mathrm{old}}+\\frac{y_{2}\\left(E_{1}-E_{2}\\right)}{\\eta}\n", + "$$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "使用$\\alpha_2^{new, unclipped}$表示求导求出来的$\\alpha_2$,然而最后的$\\alpha_2^{new}$,要根据下面情况得到:\n", + "$$\n", + "\\alpha_{2}^{\\text { new }}=\\left\\{\\begin{array}{ll}{H} & {\\text { if } \\alpha_{2}^{\\text { new, unclipped }}>H} \\\\ {\\alpha_{2}^{\\text { new, unclipped}}} & {\\text { if } L \\leq \\alpha_{2}^{\\text { new, unclipped }} \\leq H} \\\\ {L} & {\\text { if } \\alpha_{2}^{n e w, u n c l i p p e d}= 1): #依据6.3 math.fabs绝对值\n", + " return True\n", + " \n", + " elif (math.fabs(self.alpha[i] - self.C) < self.toler) and (yi * gxi <= 1): #依据6.5\n", + " return True\n", + " #依据6.4\n", + " elif (self.alpha[i] > -self.toler) and (self.alpha[i] < (self.C + self.toler)) and (math.fabs(yi * gxi - 1) < self.toler): \n", + " \n", + " return True\n", + " return False\n", + " \n", + " def calc_gxi(self, i):\n", + " '''\n", + " 计算g(xi)\n", + " 依据“7.101 两个变量二次规划的求解方法”式6.6\n", + " :param i:x的下标\n", + " :return: g(xi)的值\n", + " ''' \n", + " gxi = 0 #初始化g(xi)\n", + " #因为g(xi)是一个求和式+b的形式,普通做法应该是直接求出求和式中的每一项再相加即可\n", + " #但是读者应该有发现,在“7.2.3 支持向量”开头第一句话有说到“对应于α>0的样本点\n", + " #(xi, yi)的实例xi称为支持向量”。也就是说只有支持向量的α是大于0的,在求和式内的\n", + " #对应的αi*yi*K(xi, xj)不为0,非支持向量的αi*yi*K(xi, xj)必为0,也就不需要参与\n", + " #到计算中。也就是说,在g(xi)内部求和式的运算中,只需要计算α>0的部分,其余部分可\n", + " #忽略。因为支持向量的数量是比较少的,这样可以再很大程度上节约时间\n", + " #从另一角度看,抛掉支持向量的概念,如果α为0,αi*yi*K(xi, xj)本身也必为0,从数学\n", + " #角度上将也可以扔掉不算\n", + " \n", + " index = [i for i, alpha in enumerate(self.alpha) if alpha != 0] #index获得非零α的下标,并做成列表形式方便后续遍历 \n", + " #enumerate()于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中\n", + " #i :索引,alpha:元素\n", + " \n", + " for j in index: #遍历每一个非零α,i为非零α的下标 \n", + " gxi += self.alpha[j] * self.trainLabelMat[j] * self.k[j][i] #计算g(xi)\n", + " gxi += self.b #求和结束后再单独加上偏置b\n", + "\n", + " return gxi " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "计算$E_{i}=g\\left(x_{i}\\right)-y_{i}=\\left(\\sum_{j=1}^{N} \\alpha_{j} y_{j} K\\left(x_{j}, x_{i}\\right)+b\\right)-y_{i}, \\quad i=1,2$" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "class SVM:\n", + " def calcEi(self, i):\n", + " '''\n", + " 计算Ei\n", + " 根据“7.4.1 两个变量二次规划的求解方法”式7.105\n", + " :param i: E的下标\n", + " :return:\n", + " ''' \n", + " gxi = self.calc_gxi(i) #计算g(xi) \n", + " return gxi - self.trainLabelMat[i] #Ei = g(xi) - yi,直接将结果作为Ei返回" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "SMO中选择第二个变量\n", + "\n", + "这一步是一个优化性的算法,实际上书上算法中初始时每一个Ei应当都为-yi(因为g(xi)由于初始α为0,必然为0),然后每次按照书中第二步去计算不同的E2来使得|E1-E2|最大,但是时间耗费太长了\n", + "\n", + "在Ei的初始化中,由于所有α为0,所以一开始是设置Ei初始值为-yi。这里修改为与α一致,初始状态所有Ei为0,在运行过程中再逐步更新。\n", + "因此在挑选第二个变量时,只考虑更新过Ei的变量,但是存在问题\n", + "\n", + "1.当程序刚开始运行时,所有Ei都是0,那挑谁呢?\n", + "\n", + "当程序检测到并没有Ei为非0时,将会使用随机函数随机挑选一个\n", + "\n", + "2.怎么保证能和书中的方法保持一样的有效性呢?\n", + "\n", + "在挑选第一个变量时是有一个大循环的,它能保证遍历到每一个xi,并更新xi的值,在程序运行后期后其实绝大部分Ei都已经更新完毕了。下方优化算法只不过是在程序运行的前半程进行了时间的加速,在程序后期其实与未优化的情况无异" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "class SVM:\n", + " def getAlphaJ(self, E1, i):\n", + " '''\n", + " SMO中选择第二个变量\n", + " :param E1: 第一个变量的E1\n", + " :param i: 第一个变量α的下标\n", + " :return: E2,α2的下标\n", + " ''' \n", + " E2 = 0 #初始化E2 \n", + " maxE1_E2 = -1 #初始化|E1-E2|为-1\n", + " maxIndex = -1 #初始化第二个变量的下标\n", + " nozeroE = [i for i, Ei in enumerate(self.E) if Ei != 0] #获得Ei非0的对应索引组成的列表,列表内容为非0Ei的下标i\n", + "\n", + " for j in nozeroE: #对每个非零Ei的下标i进行遍历\n", + " E2_tmp = self.calcEi(j) #计算E2\n", + " if math.fabs(E1 - E2_tmp) > maxE1_E2: #如果|E1-E2|大于目前最大值\n", + " maxE1_E2 = math.fabs(E1 - E2_tmp) #更新最大值\n", + " E2 = E2_tmp #更新最大值E2 \n", + " maxIndex = j #更新最大值E2的索引j\n", + " if maxIndex == -1: #如果列表中没有非0元素了(对应程序最开始运行时的情况)\n", + " maxIndex = i\n", + " while maxIndex == i: \n", + " maxIndex = int(random.uniform(0, self.m)) #获得随机数,如果随机数与第一个变量的下标i一致则重新随机 \n", + " E2 = self.calcEi(maxIndex) #获得E2\n", + "\n", + " return E2, maxIndex #返回第二个变量的E2值以及其索引" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "import numpy as np\n", + "class SVM:\n", + " def __init__(self, trainDataList, trainLabelList, sigma = 10, C = 200, toler = 0.001):\n", + " '''\n", + " SVM相关参数初始化\n", + " :param trainDataList:训练数据集\n", + " :param trainLabelList: 训练测试集\n", + " :param sigma: 高斯核中分母的σ\n", + " :param C:软间隔中的惩罚参数\n", + " :param toler:松弛变量\n", + " '''\n", + " self.trainDataMat = np.mat(trainDataList) #训练数据集\n", + " self.trainLabelMat = np.mat(trainLabelList).T #训练标签集,为了方便后续运算提前做了转置,变为列向量\n", + " self.m, self.n = np.shape(self.trainDataMat) #m:训练集数量 n:样本特征数目\n", + " self.sigma = sigma #高斯核分母中的σ\n", + " self.C = C #惩罚参数\n", + " self.toler = toler #松弛变量\n", + " self.k = self.calcKernel() #核函数(初始化时提前计算)\n", + " self.b = 0 #SVM中的偏置b\n", + " self.alpha = [0] * self.trainDataMat.shape[0] # α 长度为训练集数目\n", + " self.E = [0 * self.trainLabelMat[i, 0] for i in range(self.trainLabelMat.shape[0])] #SMO运算过程中的Ei\n", + " self.supportVecIndex = []\n", + " \n", + " def calcKernel(self):\n", + " '''\n", + " 计算核函数\n", + " 使用的是高斯核 \n", + " :return: 高斯核矩阵\n", + " ''' \n", + " k = [[0 for i in range(self.m)] for j in range(self.m)] #初始化高斯核结果矩阵 大小 = 训练集长度m * 训练集长度m #k[i][j] = Xi * Xj\n", + " \n", + " for i in range(self.m): #大循环遍历式5.1中的x \n", + " if i % 100 == 0:\n", + " print('construct the kernel:', i, self.m) \n", + " X = self.trainDataMat[i, :] #得到式5.1中的X \n", + " \n", + " for j in range(i, self.m): \n", + " #小循环遍历Xj,Xj为式5.1中的Z # 由于 Xi * Xj 等于 Xj * Xi,一次计算得到的结果可以\n", + " # 同时放在k[i][j]和k[j][i]中,这样一个矩阵只需要计算上半部分即可,所以小循环直接从i开始\n", + " \n", + " Z = self.trainDataMat[j, :] #获得Z \n", + " frac = (X - Z) * (X - Z).T #先计算||X - Z||^2 \n", + " result = np.exp(-1 * frac / (2 * self.sigma**2)) #分子除以分母后去指数,得到的即为高斯核结果 \n", + " k[i][j] = result #将Xi*Xj的结果存放入k中(上半部分与下半部分相同)\n", + " k[j][i] = result \n", + " return k #返回高斯核矩阵\n", + "\n", + " def isSatisfyKKT(self, i):\n", + " '''\n", + " 查看第i个α是否满足KKT条件\n", + " :param i:α的下标\n", + " :return:\n", + " True:满足\n", + " False:不满足\n", + " '''\n", + " gxi = self.calc_gxi(i)\n", + " yi = self.trainLabelMat[i] #判断依据参照“第1个变量的选择”(加入了松弛变量)\n", + "\n", + "\n", + " if (math.fabs(self.alpha[i]) < self.toler) and (yi * gxi >= 1): #依据6.3 math.fabs绝对值\n", + " return True\n", + " \n", + " elif (math.fabs(self.alpha[i] - self.C) < self.toler) and (yi * gxi <= 1): #依据6.5\n", + " return True\n", + " #依据6.4\n", + " elif (self.alpha[i] > -self.toler) and (self.alpha[i] < (self.C + self.toler)) and (math.fabs(yi * gxi - 1) < self.toler): \n", + " \n", + " return True\n", + " return False\n", + " \n", + " def calc_gxi(self, i):\n", + " '''\n", + " 计算g(xi)\n", + " 依据“7.101 两个变量二次规划的求解方法”式6.6\n", + " :param i:x的下标\n", + " :return: g(xi)的值\n", + " ''' \n", + " gxi = 0 #初始化g(xi)\n", + " #因为g(xi)是一个求和式+b的形式,普通做法应该是直接求出求和式中的每一项再相加即可\n", + " #但是读者应该有发现,在“7.2.3 支持向量”开头第一句话有说到“对应于α>0的样本点\n", + " #(xi, yi)的实例xi称为支持向量”。也就是说只有支持向量的α是大于0的,在求和式内的\n", + " #对应的αi*yi*K(xi, xj)不为0,非支持向量的αi*yi*K(xi, xj)必为0,也就不需要参与\n", + " #到计算中。也就是说,在g(xi)内部求和式的运算中,只需要计算α>0的部分,其余部分可\n", + " #忽略。因为支持向量的数量是比较少的,这样可以再很大程度上节约时间\n", + " #从另一角度看,抛掉支持向量的概念,如果α为0,αi*yi*K(xi, xj)本身也必为0,从数学\n", + " #角度上将也可以扔掉不算\n", + " \n", + " index = [i for i, alpha in enumerate(self.alpha) if alpha != 0] #index获得非零α的下标,并做成列表形式方便后续遍历 \n", + " #enumerate()于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中\n", + " #i :索引,alpha:元素\n", + " \n", + " for j in index: #遍历每一个非零α,i为非零α的下标 \n", + " gxi += self.alpha[j] * self.trainLabelMat[j] * self.k[j][i] #计算g(xi)\n", + " gxi += self.b #求和结束后再单独加上偏置b\n", + "\n", + " return gxi\n", + "\n", + " def calcEi(self, i):\n", + " '''\n", + " 计算Ei\n", + " 根据“7.4.1 两个变量二次规划的求解方法”式7.105\n", + " :param i: E的下标\n", + " :return:\n", + " ''' \n", + " gxi = self.calc_gxi(i) #计算g(xi) \n", + " return gxi - self.trainLabelMat[i] #Ei = g(xi) - yi,直接将结果作为Ei返回\n", + "\n", + " def getAlphaJ(self, E1, i):\n", + " '''\n", + " SMO中选择第二个变量\n", + " :param E1: 第一个变量的E1\n", + " :param i: 第一个变量α的下标\n", + " :return: E2,α2的下标\n", + " ''' \n", + " E2 = 0 #初始化E2 \n", + " maxE1_E2 = -1 #初始化|E1-E2|为-1\n", + " maxIndex = -1 #初始化第二个变量的下标\n", + " nozeroE = [i for i, Ei in enumerate(self.E) if Ei != 0] #获得Ei非0的对应索引组成的列表,列表内容为非0Ei的下标i\n", + "\n", + " for j in nozeroE: #对每个非零Ei的下标i进行遍历\n", + " E2_tmp = self.calcEi(j) #计算E2\n", + " if math.fabs(E1 - E2_tmp) > maxE1_E2: #如果|E1-E2|大于目前最大值\n", + " maxE1_E2 = math.fabs(E1 - E2_tmp) #更新最大值\n", + " E2 = E2_tmp #更新最大值E2 \n", + " maxIndex = j #更新最大值E2的索引j\n", + " if maxIndex == -1: #如果列表中没有非0元素了(对应程序最开始运行时的情况)\n", + " maxIndex = i\n", + " while maxIndex == i: \n", + " maxIndex = int(np.random.uniform(0, self.m)) #获得随机数,如果随机数与第一个变量的下标i一致则重新随机 \n", + " E2 = self.calcEi(maxIndex) #获得E2\n", + "\n", + " return E2, maxIndex #返回第二个变量的E2值以及其索引\n", + "\n", + " def train(self, iter = 100): #iterStep:迭代次数,超过设置次数还未收敛则强制停止 \n", + " iterStep = 0\n", + " parameterChanged = 1 #parameterChanged:单次迭代中有参数改变则增加1\n", + " #parameterChanged==0时表示上次迭代没有参数改变,如果遍历了一遍都没有参数改变,说明达到了收敛状态,可以停止了\n", + "\n", + " while (iterStep < iter) and (parameterChanged > 0): \n", + " print('iter:%d:%d'%( iterStep, iter)) #打印当前迭代轮数 \n", + " iterStep += 1 #迭代步数加1\n", + " \n", + " parameterChanged = 0 #新的一轮将参数改变标志位重新置0\n", + " \n", + " for i in range(self.m): #大循环遍历所有样本,用于找SMO中第一个变量 \n", + " if self.isSatisfyKKT(i) == False: #查看第一个遍历是否满足KKT条件,如果不满足则作为SMO中第一个变量从而进行优化\n", + " #如果下标为i的α不满足KKT条件,则进行优化\n", + " #第一个变量α的下标i已经确定,接下来按照第二步选择变量2。由于变量2的选择中涉及到|E1 - E2|,因此先计算E1\n", + " E1 = self.calcEi(i)\n", + " \n", + " E2, j = self.getAlphaJ(E1, i) #选择第2个变量 #参考“7.4.1两个变量二次规划的求解方法” P126 下半部分\n", + " \n", + " y1 = self.trainLabelMat[i] #获得两个变量的标签\n", + " y2 = self.trainLabelMat[j]\n", + " \n", + " alphaOld_1 = self.alpha[i] #复制α值作为old值\n", + " alphaOld_2 = self.alpha[j]\n", + " \n", + " if y1 != y2: #依据标签是否一致来生成不同的L和H\n", + " L = max(0, alphaOld_2 - alphaOld_1)\n", + " H = min(self.C, self.C + alphaOld_2 - alphaOld_1)\n", + " else:\n", + " L = max(0, alphaOld_2 + alphaOld_1 - self.C)\n", + " H = min(self.C, alphaOld_2 + alphaOld_1)\n", + " \n", + " if L == H: continue #如果两者相等,说明该变量无法再优化,直接跳到下一次循环\n", + "\n", + " k11 = self.k[i][i] #计算α的新值 \n", + " k22 = self.k[j][j] #依据“7.4.1两个变量二次规划的求解方法”式7.106更新α2值\n", + " k21 = self.k[j][i] #先获得几个k值,用来计算事7.106中的分母η\n", + " k12 = self.k[i][j]\n", + " \n", + " alphaNew_2 = alphaOld_2 + y2 * (E1 - E2) / (k11 + k22 - 2 * k12) #依据式7.106更新α2,该α2还未经剪切\n", + " \n", + " if alphaNew_2 < L: alphaNew_2 = L #剪切α2\n", + " elif alphaNew_2 > H: alphaNew_2 = H\n", + " \n", + " alphaNew_1 = alphaOld_1 + y1 * y2 * (alphaOld_2 - alphaNew_2) #更新α1,依据式7.109\n", + " #依据“7.4.2 变量的选择方法”第三步式7.115和7.116计算b1和b2\n", + " b1New = -1 * E1 - y1 * k11 * (alphaNew_1 - alphaOld_1) - y2 * k21 * (alphaNew_2 - alphaOld_2) + self.b\n", + " b2New = -1 * E2 - y1 * k12 * (alphaNew_1 - alphaOld_1) - y2 * k22 * (alphaNew_2 - alphaOld_2) + self.b\n", + " \n", + " if (alphaNew_1 > 0) and (alphaNew_1 < self.C): #依据α1和α2的值范围确定新b\n", + " bNew = b1New\n", + " elif (alphaNew_2 > 0) and (alphaNew_2 < self.C):\n", + " bNew = b2New\n", + " else:\n", + " bNew = (b1New + b2New) / 2\n", + " \n", + " self.alpha[i] = alphaNew_1 #将更新后的各类值写入,进行更新\n", + " self.alpha[j] = alphaNew_2\n", + " self.b = bNew\n", + " self.E[i] = self.calcEi(i)\n", + " self.E[j] = self.calcEi(j) \n", + " \n", + " if math.fabs(alphaNew_2 - alphaOld_2) >= 0.00001: #如果α2的改变量过于小,就认为该参数未改变,不增加parameterChanged值\n", + " parameterChanged += 1 #反之则自增1\n", + " print(\"iter: %d i:%d, pairs changed %d\" % (iterStep, i, parameterChanged)) #打印迭代轮数,i值,该迭代轮数修改α数目\n", + "\n", + " for i in range(self.m): #全部计算结束后,重新遍历一遍α,查找里面的支持向量\n", + " if self.alpha[i] > 0: #如果α>0,说明是支持向量\n", + " self.supportVecIndex.append(i) #将支持向量的索引保存起来\n", + " \n", + " def calcSinglKernel(self, x1, x2):\n", + " '''\n", + " 单独计算核函数\n", + " :param x1:向量1\n", + " :param x2: 向量2\n", + " :return: 核函数结果\n", + " '''\n", + " result = (x1 - x2) * (x1 - x2).T #按照“7.3.3 常用核函数”式7.90计算高斯核\n", + " result = np.exp(-1 * result / (2 * self.sigma ** 2)) #返回结果\n", + " return np.exp(result)\n", + " \n", + " def predict(self, x):\n", + " '''\n", + " 对样本的标签进行预测\n", + " 公式依据“7.3.4 非线性支持向量分类机”中的式7.94\n", + " :param x: 要预测的样本x\n", + " :return: 预测结果\n", + " '''\n", + " result = 0\n", + " for i in self.supportVecIndex:\n", + " #遍历所有支持向量,计算求和式\n", + " #如果是非支持向量,求和子式必为0,没有必须进行计算\n", + " #这也是为什么在SVM最后只有支持向量起作用\n", + " \n", + " tmp = self.calcSinglKernel(self.trainDataMat[i, :], np.mat(x)) #先单独将核函数计算出来 \n", + " result += self.alpha[i] * self.trainLabelMat[i] * tmp #对每一项子式进行求和,最终计算得到求和项的值\n", + " result += self.b #求和项计算结束后加上偏置b\n", + " \n", + " return np.sign(result) #使用sign函数返回预测结果" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "construct the kernel: 0 1000\n", + "construct the kernel: 100 1000\n", + "construct the kernel: 200 1000\n", + "construct the kernel: 300 1000\n", + "construct the kernel: 400 1000\n", + "construct the kernel: 500 1000\n", + "construct the kernel: 600 1000\n", + "construct the kernel: 700 1000\n", + "construct the kernel: 800 1000\n", + "construct the kernel: 900 1000\n" + ] + } + ], + "source": [ + "svm = SVM(trainData[:1000], trainLabel[:1000], 10, 200, 0.001)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iter:0:100\n", + "iter: 1 i:16, pairs changed 1\n", + "iter: 1 i:21, pairs changed 1\n", + "iter: 1 i:22, pairs changed 2\n", + "iter: 1 i:34, pairs changed 2\n", + "iter: 1 i:35, pairs changed 3\n", + "iter: 1 i:37, pairs changed 3\n", + "iter: 1 i:38, pairs changed 4\n", + "iter: 1 i:51, pairs changed 4\n", + "iter: 1 i:52, pairs changed 5\n", + "iter: 1 i:56, pairs changed 5\n", + "iter: 1 i:57, pairs changed 6\n", + "iter: 1 i:63, pairs changed 6\n", + "iter: 1 i:64, pairs changed 7\n", + "iter: 1 i:68, pairs changed 7\n", + "iter: 1 i:69, pairs changed 7\n", + "iter: 1 i:70, pairs changed 8\n", + "iter: 1 i:71, pairs changed 9\n", + "iter: 1 i:75, pairs changed 9\n", + "iter: 1 i:76, pairs changed 10\n", + "iter: 1 i:81, pairs changed 10\n", + "iter: 1 i:82, pairs changed 11\n", + "iter: 1 i:88, pairs changed 11\n", + "iter: 1 i:89, pairs changed 12\n", + "iter: 1 i:95, pairs changed 12\n", + "iter: 1 i:96, pairs changed 13\n", + "iter: 1 i:108, pairs changed 13\n", + "iter: 1 i:109, pairs changed 14\n", + "iter: 1 i:114, pairs changed 14\n", + "iter: 1 i:115, pairs changed 15\n", + "iter: 1 i:118, pairs changed 15\n", + "iter: 1 i:119, pairs changed 15\n", + "iter: 1 i:120, pairs changed 16\n", + "iter: 1 i:121, pairs changed 16\n", + "iter: 1 i:122, pairs changed 17\n", + "iter: 1 i:123, pairs changed 18\n", + "iter: 1 i:156, pairs changed 18\n", + "iter: 1 i:157, pairs changed 19\n", + "iter: 1 i:169, pairs changed 19\n", + "iter: 1 i:170, pairs changed 20\n", + "iter: 1 i:192, pairs changed 20\n", + "iter: 1 i:193, pairs changed 21\n", + "iter: 1 i:206, pairs changed 21\n", + "iter: 1 i:207, pairs changed 22\n", + "iter: 1 i:209, pairs changed 22\n", + "iter: 1 i:210, pairs changed 22\n", + "iter: 1 i:211, pairs changed 23\n", + "iter: 1 i:212, pairs changed 24\n", + "iter: 1 i:216, pairs changed 24\n", + "iter: 1 i:217, pairs changed 25\n", + "iter: 1 i:229, pairs changed 25\n", + "iter: 1 i:230, pairs changed 26\n", + "iter: 1 i:232, pairs changed 26\n", + "iter: 1 i:233, pairs changed 27\n", + "iter: 1 i:234, pairs changed 27\n", + "iter: 1 i:246, pairs changed 27\n", + "iter: 1 i:247, pairs changed 28\n", + "iter: 1 i:249, pairs changed 28\n", + "iter: 1 i:250, pairs changed 29\n", + "iter: 1 i:260, pairs changed 29\n", + "iter: 1 i:261, pairs changed 30\n", + "iter: 1 i:283, pairs changed 30\n", + "iter: 1 i:284, pairs changed 31\n", + "iter: 1 i:293, pairs changed 31\n", + "iter: 1 i:294, pairs changed 32\n", + "iter: 1 i:296, pairs changed 32\n", + "iter: 1 i:297, pairs changed 33\n", + "iter: 1 i:303, pairs changed 33\n", + "iter: 1 i:304, pairs changed 34\n", + "iter: 1 i:320, pairs changed 34\n", + "iter: 1 i:321, pairs changed 35\n", + "iter: 1 i:326, pairs changed 35\n", + "iter: 1 i:327, pairs changed 36\n", + "iter: 1 i:359, pairs changed 36\n", + "iter: 1 i:360, pairs changed 37\n", + "iter: 1 i:399, pairs changed 37\n", + "iter: 1 i:400, pairs changed 38\n", + "iter: 1 i:427, pairs changed 38\n", + "iter: 1 i:428, pairs changed 39\n", + "iter: 1 i:429, pairs changed 39\n", + "iter: 1 i:430, pairs changed 40\n", + "iter: 1 i:435, pairs changed 40\n", + "iter: 1 i:436, pairs changed 41\n", + "iter: 1 i:440, pairs changed 41\n", + "iter: 1 i:441, pairs changed 42\n", + "iter: 1 i:451, pairs changed 42\n", + "iter: 1 i:452, pairs changed 43\n", + "iter: 1 i:453, pairs changed 43\n", + "iter: 1 i:454, pairs changed 44\n", + "iter: 1 i:458, pairs changed 44\n", + "iter: 1 i:459, pairs changed 45\n", + "iter: 1 i:462, pairs changed 45\n", + "iter: 1 i:463, pairs changed 46\n", + "iter: 1 i:464, pairs changed 46\n", + "iter: 1 i:465, pairs changed 47\n", + "iter: 1 i:473, pairs changed 47\n", + "iter: 1 i:474, pairs changed 48\n", + "iter: 1 i:489, pairs changed 48\n", + "iter: 1 i:490, pairs changed 49\n", + "iter: 1 i:519, pairs changed 49\n", + "iter: 1 i:520, pairs changed 50\n", + "iter: 1 i:524, pairs changed 50\n", + "iter: 1 i:525, pairs changed 51\n", + "iter: 1 i:526, pairs changed 51\n", + "iter: 1 i:527, pairs changed 51\n", + "iter: 1 i:528, pairs changed 52\n", + "iter: 1 i:529, pairs changed 53\n", + "iter: 1 i:542, pairs changed 53\n", + "iter: 1 i:543, pairs changed 54\n", + "iter: 1 i:577, pairs changed 54\n", + "iter: 1 i:578, pairs changed 55\n", + "iter: 1 i:582, pairs changed 55\n", + "iter: 1 i:583, pairs changed 56\n", + "iter: 1 i:596, pairs changed 56\n", + "iter: 1 i:597, pairs changed 57\n", + "iter: 1 i:603, pairs changed 57\n", + "iter: 1 i:604, pairs changed 58\n", + "iter: 1 i:612, pairs changed 58\n", + "iter: 1 i:613, pairs changed 59\n", + "iter: 1 i:633, pairs changed 59\n", + "iter: 1 i:634, pairs changed 60\n", + "iter: 1 i:639, pairs changed 60\n", + "iter: 1 i:640, pairs changed 61\n", + "iter: 1 i:656, pairs changed 61\n", + "iter: 1 i:657, pairs changed 62\n", + "iter: 1 i:662, pairs changed 62\n", + "iter: 1 i:663, pairs changed 63\n", + "iter: 1 i:666, pairs changed 63\n", + "iter: 1 i:667, pairs changed 63\n", + "iter: 1 i:668, pairs changed 63\n", + "iter: 1 i:669, pairs changed 63\n", + "iter: 1 i:670, pairs changed 64\n", + "iter: 1 i:671, pairs changed 65\n", + "iter: 1 i:672, pairs changed 66\n", + "iter: 1 i:673, pairs changed 67\n", + "iter: 1 i:689, pairs changed 67\n", + "iter: 1 i:690, pairs changed 68\n", + "iter: 1 i:702, pairs changed 68\n", + "iter: 1 i:703, pairs changed 69\n", + "iter: 1 i:709, pairs changed 69\n", + "iter: 1 i:710, pairs changed 70\n", + "iter: 1 i:712, pairs changed 70\n", + "iter: 1 i:713, pairs changed 71\n", + "iter: 1 i:733, pairs changed 71\n", + "iter: 1 i:734, pairs changed 72\n", + "iter: 1 i:743, pairs changed 72\n", + "iter: 1 i:744, pairs changed 73\n", + "iter: 1 i:745, pairs changed 73\n", + "iter: 1 i:746, pairs changed 74\n", + "iter: 1 i:776, pairs changed 74\n", + "iter: 1 i:777, pairs changed 75\n", + "iter: 1 i:781, pairs changed 75\n", + "iter: 1 i:782, pairs changed 76\n", + "iter: 1 i:787, pairs changed 76\n", + "iter: 1 i:788, pairs changed 77\n", + "iter: 1 i:790, pairs changed 77\n", + "iter: 1 i:791, pairs changed 78\n", + "iter: 1 i:818, pairs changed 78\n", + "iter: 1 i:819, pairs changed 79\n", + "iter: 1 i:825, pairs changed 79\n", + "iter: 1 i:826, pairs changed 80\n", + "iter: 1 i:849, pairs changed 80\n", + "iter: 1 i:850, pairs changed 81\n", + "iter: 1 i:859, pairs changed 81\n", + "iter: 1 i:860, pairs changed 81\n", + "iter: 1 i:861, pairs changed 82\n", + "iter: 1 i:862, pairs changed 83\n", + "iter: 1 i:869, pairs changed 83\n", + "iter: 1 i:870, pairs changed 84\n", + "iter: 1 i:872, pairs changed 84\n", + "iter: 1 i:873, pairs changed 85\n", + "iter: 1 i:889, pairs changed 85\n", + "iter: 1 i:890, pairs changed 86\n", + "iter: 1 i:903, pairs changed 86\n", + "iter: 1 i:904, pairs changed 87\n", + "iter: 1 i:927, pairs changed 87\n", + "iter: 1 i:928, pairs changed 88\n", + "iter: 1 i:943, pairs changed 88\n", + "iter: 1 i:944, pairs changed 89\n", + "iter: 1 i:949, pairs changed 89\n", + "iter: 1 i:950, pairs changed 90\n", + "iter: 1 i:952, pairs changed 90\n", + "iter: 1 i:953, pairs changed 91\n", + "iter: 1 i:957, pairs changed 91\n", + "iter: 1 i:958, pairs changed 92\n", + "iter: 1 i:965, pairs changed 92\n", + "iter: 1 i:966, pairs changed 93\n", + "iter: 1 i:979, pairs changed 93\n", + "iter: 1 i:980, pairs changed 94\n", + "iter: 1 i:984, pairs changed 94\n", + "iter: 1 i:985, pairs changed 95\n", + "iter: 1 i:997, pairs changed 95\n", + "iter: 1 i:998, pairs changed 96\n", + "iter:1:100\n", + "iter: 2 i:1, pairs changed 0\n", + "iter: 2 i:2, pairs changed 1\n", + "iter: 2 i:21, pairs changed 1\n", + "iter: 2 i:34, pairs changed 1\n", + "iter: 2 i:37, pairs changed 1\n", + "iter: 2 i:51, pairs changed 1\n", + "iter: 2 i:56, pairs changed 1\n", + "iter: 2 i:63, pairs changed 1\n", + "iter: 2 i:68, pairs changed 1\n", + "iter: 2 i:69, pairs changed 1\n", + "iter: 2 i:75, pairs changed 1\n", + "iter: 2 i:81, pairs changed 1\n", + "iter: 2 i:88, pairs changed 1\n", + "iter: 2 i:95, pairs changed 1\n", + "iter: 2 i:108, pairs changed 1\n", + "iter: 2 i:114, pairs changed 1\n", + "iter: 2 i:118, pairs changed 1\n", + "iter: 2 i:119, pairs changed 1\n", + "iter: 2 i:121, pairs changed 1\n", + "iter: 2 i:156, pairs changed 1\n", + "iter: 2 i:169, pairs changed 1\n", + "iter: 2 i:192, pairs changed 1\n", + "iter: 2 i:206, pairs changed 1\n", + "iter: 2 i:209, pairs changed 1\n", + "iter: 2 i:210, pairs changed 1\n", + "iter: 2 i:216, pairs changed 1\n", + "iter: 2 i:229, pairs changed 1\n", + "iter: 2 i:232, pairs changed 1\n", + "iter: 2 i:234, pairs changed 1\n", + "iter: 2 i:246, pairs changed 1\n", + "iter: 2 i:249, pairs changed 1\n", + "iter: 2 i:260, pairs changed 1\n", + "iter: 2 i:283, pairs changed 1\n", + "iter: 2 i:293, pairs changed 1\n", + "iter: 2 i:296, pairs changed 1\n", + "iter: 2 i:303, pairs changed 1\n", + "iter: 2 i:320, pairs changed 1\n", + "iter: 2 i:326, pairs changed 1\n", + "iter: 2 i:359, pairs changed 1\n", + "iter: 2 i:399, pairs changed 1\n", + "iter: 2 i:427, pairs changed 1\n", + "iter: 2 i:429, pairs changed 1\n", + "iter: 2 i:435, pairs changed 1\n", + "iter: 2 i:440, pairs changed 1\n", + "iter: 2 i:451, pairs changed 1\n", + "iter: 2 i:453, pairs changed 1\n", + "iter: 2 i:458, pairs changed 1\n", + "iter: 2 i:462, pairs changed 1\n", + "iter: 2 i:464, pairs changed 1\n", + "iter: 2 i:473, pairs changed 1\n", + "iter: 2 i:489, pairs changed 1\n", + "iter: 2 i:519, pairs changed 1\n", + "iter: 2 i:524, pairs changed 1\n", + "iter: 2 i:526, pairs changed 1\n", + "iter: 2 i:527, pairs changed 1\n", + "iter: 2 i:542, pairs changed 1\n", + "iter: 2 i:577, pairs changed 1\n", + "iter: 2 i:582, pairs changed 1\n", + "iter: 2 i:596, pairs changed 1\n", + "iter: 2 i:603, pairs changed 1\n", + "iter: 2 i:612, pairs changed 1\n", + "iter: 2 i:633, pairs changed 1\n", + "iter: 2 i:639, pairs changed 1\n", + "iter: 2 i:656, pairs changed 1\n", + "iter: 2 i:662, pairs changed 1\n", + "iter: 2 i:666, pairs changed 1\n", + "iter: 2 i:667, pairs changed 1\n", + "iter: 2 i:668, pairs changed 1\n", + "iter: 2 i:669, pairs changed 1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iter: 2 i:689, pairs changed 1\n", + "iter: 2 i:702, pairs changed 1\n", + "iter: 2 i:709, pairs changed 1\n", + "iter: 2 i:712, pairs changed 1\n", + "iter: 2 i:733, pairs changed 1\n", + "iter: 2 i:743, pairs changed 1\n", + "iter: 2 i:745, pairs changed 1\n", + "iter: 2 i:776, pairs changed 1\n", + "iter: 2 i:781, pairs changed 1\n", + "iter: 2 i:787, pairs changed 1\n", + "iter: 2 i:790, pairs changed 1\n", + "iter: 2 i:818, pairs changed 1\n", + "iter: 2 i:825, pairs changed 1\n", + "iter: 2 i:849, pairs changed 1\n", + "iter: 2 i:859, pairs changed 1\n", + "iter: 2 i:860, pairs changed 1\n", + "iter: 2 i:869, pairs changed 1\n", + "iter: 2 i:872, pairs changed 1\n", + "iter: 2 i:889, pairs changed 1\n", + "iter: 2 i:903, pairs changed 1\n", + "iter: 2 i:927, pairs changed 1\n", + "iter: 2 i:943, pairs changed 1\n", + "iter: 2 i:949, pairs changed 1\n", + "iter: 2 i:952, pairs changed 1\n", + "iter: 2 i:957, pairs changed 1\n", + "iter: 2 i:965, pairs changed 1\n", + "iter: 2 i:979, pairs changed 1\n", + "iter: 2 i:984, pairs changed 1\n", + "iter: 2 i:997, pairs changed 1\n", + "iter:2:100\n", + "iter: 3 i:1, pairs changed 0\n", + "iter: 3 i:21, pairs changed 0\n", + "iter: 3 i:34, pairs changed 0\n", + "iter: 3 i:37, pairs changed 0\n", + "iter: 3 i:51, pairs changed 0\n", + "iter: 3 i:56, pairs changed 0\n", + "iter: 3 i:63, pairs changed 0\n", + "iter: 3 i:68, pairs changed 0\n", + "iter: 3 i:69, pairs changed 0\n", + "iter: 3 i:75, pairs changed 0\n", + "iter: 3 i:81, pairs changed 0\n", + "iter: 3 i:88, pairs changed 0\n", + "iter: 3 i:95, pairs changed 0\n", + "iter: 3 i:108, pairs changed 0\n", + "iter: 3 i:114, pairs changed 0\n", + "iter: 3 i:118, pairs changed 0\n", + "iter: 3 i:119, pairs changed 0\n", + "iter: 3 i:121, pairs changed 0\n", + "iter: 3 i:156, pairs changed 0\n", + "iter: 3 i:169, pairs changed 0\n", + "iter: 3 i:192, pairs changed 0\n", + "iter: 3 i:206, pairs changed 0\n", + "iter: 3 i:209, pairs changed 0\n", + "iter: 3 i:210, pairs changed 0\n", + "iter: 3 i:216, pairs changed 0\n", + "iter: 3 i:229, pairs changed 0\n", + "iter: 3 i:232, pairs changed 0\n", + "iter: 3 i:234, pairs changed 0\n", + "iter: 3 i:246, pairs changed 0\n", + "iter: 3 i:249, pairs changed 0\n", + "iter: 3 i:260, pairs changed 0\n", + "iter: 3 i:283, pairs changed 0\n", + "iter: 3 i:293, pairs changed 0\n", + "iter: 3 i:296, pairs changed 0\n", + "iter: 3 i:303, pairs changed 0\n", + "iter: 3 i:320, pairs changed 0\n", + "iter: 3 i:326, pairs changed 0\n", + "iter: 3 i:359, pairs changed 0\n", + "iter: 3 i:399, pairs changed 0\n", + "iter: 3 i:427, pairs changed 0\n", + "iter: 3 i:429, pairs changed 0\n", + "iter: 3 i:435, pairs changed 0\n", + "iter: 3 i:440, pairs changed 0\n", + "iter: 3 i:451, pairs changed 0\n", + "iter: 3 i:453, pairs changed 0\n", + "iter: 3 i:458, pairs changed 0\n", + "iter: 3 i:462, pairs changed 0\n", + "iter: 3 i:464, pairs changed 0\n", + "iter: 3 i:473, pairs changed 0\n", + "iter: 3 i:489, pairs changed 0\n", + "iter: 3 i:519, pairs changed 0\n", + "iter: 3 i:524, pairs changed 0\n", + "iter: 3 i:526, pairs changed 0\n", + "iter: 3 i:527, pairs changed 0\n", + "iter: 3 i:542, pairs changed 0\n", + "iter: 3 i:577, pairs changed 0\n", + "iter: 3 i:582, pairs changed 0\n", + "iter: 3 i:596, pairs changed 0\n", + "iter: 3 i:603, pairs changed 0\n", + "iter: 3 i:612, pairs changed 0\n", + "iter: 3 i:633, pairs changed 0\n", + "iter: 3 i:639, pairs changed 0\n", + "iter: 3 i:656, pairs changed 0\n", + "iter: 3 i:662, pairs changed 0\n", + "iter: 3 i:666, pairs changed 0\n", + "iter: 3 i:667, pairs changed 0\n", + "iter: 3 i:668, pairs changed 0\n", + "iter: 3 i:669, pairs changed 0\n", + "iter: 3 i:689, pairs changed 0\n", + "iter: 3 i:702, pairs changed 0\n", + "iter: 3 i:709, pairs changed 0\n", + "iter: 3 i:712, pairs changed 0\n", + "iter: 3 i:733, pairs changed 0\n", + "iter: 3 i:743, pairs changed 0\n", + "iter: 3 i:745, pairs changed 0\n", + "iter: 3 i:776, pairs changed 0\n", + "iter: 3 i:781, pairs changed 0\n", + "iter: 3 i:787, pairs changed 0\n", + "iter: 3 i:790, pairs changed 0\n", + "iter: 3 i:818, pairs changed 0\n", + "iter: 3 i:825, pairs changed 0\n", + "iter: 3 i:849, pairs changed 0\n", + "iter: 3 i:859, pairs changed 0\n", + "iter: 3 i:860, pairs changed 0\n", + "iter: 3 i:869, pairs changed 0\n", + "iter: 3 i:872, pairs changed 0\n", + "iter: 3 i:889, pairs changed 0\n", + "iter: 3 i:903, pairs changed 0\n", + "iter: 3 i:927, pairs changed 0\n", + "iter: 3 i:943, pairs changed 0\n", + "iter: 3 i:949, pairs changed 0\n", + "iter: 3 i:952, pairs changed 0\n", + "iter: 3 i:957, pairs changed 0\n", + "iter: 3 i:965, pairs changed 0\n", + "iter: 3 i:979, pairs changed 0\n", + "iter: 3 i:984, pairs changed 0\n", + "iter: 3 i:997, pairs changed 0\n" + ] + } + ], + "source": [ + "svm.train()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9817\n" + ] + } + ], + "source": [ + "errorCnt = 0\n", + "for i in range(len(testData[:200])):\n", + " if testLabel[i] != svm.predict(testData[i]):\n", + " errorCnt += 1\n", + "accuracy = 1 - errorCnt / len(testData)\n", + "print(accuracy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "oldHeight": 208.4, + "position": { + "height": "230px", + "left": "1166px", + "right": "20px", + "top": "120px", + "width": "354px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "varInspector_section_display": "block", + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/07-AdaBoost.ipynb b/07-AdaBoost.ipynb new file mode 100644 index 0000000..b566e15 --- /dev/null +++ b/07-AdaBoost.ipynb @@ -0,0 +1,2395 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start read file\n", + "start read file\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from minst import loadData\n", + "\n", + "trainData, trainLabel = loadData(fileName='D:/Jupyter/mnist_train.csv',data_bin=1,label_bin=1)\n", + "testData, testLabel = loadData(fileName='D:/Jupyter/mnist_test.csv',data_bin=1,label_bin=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "def calc_e_Gx(trainDataArr, trainLabelArr, n, div, rule, D):\n", + " '''\n", + " 计算分类错误率\n", + " :param trainDataArr:训练数据集数字\n", + " :param trainLabelArr: 训练标签集数组\n", + " :param n: 要操作的特征\n", + " :param div:划分点\n", + " :param rule:正反例标签\n", + " :param D:权值分布D\n", + " :return:预测结果, 分类误差率\n", + " '''\n", + "\n", + " e = 0 #初始化分类误差率为0\n", + " x = trainDataArr[:, n] #将训练数据矩阵中特征为n的那一列单独剥出来做成数组。因为其他元素我们并不需要,\n", + " y = trainLabelArr #同样将标签也转换成数组格式\n", + " predict = []\n", + "\n", + " if rule == 'LisOne': \n", + " L = 1; H = -1 #依据小于和大于的标签依据实际情况会不同,在这里直接进行设置\n", + " else: \n", + " L = -1; H = 1\n", + " \n", + " for i in range(trainDataArr.shape[0]): #遍历所有样本的特征m\n", + " if x[i] < div: #如果小于划分点,则预测为L #如果设置小于div为1,那么L就是1, #如果设置小于div为-1,L就是-1\n", + " predict.append(L) \n", + " if y[i] != L: \n", + " e += D[i] #如果预测错误,分类错误率要加上该分错的样本的权值(8.1式)\n", + " elif x[i] >= div: \n", + " predict.append(H) #与上面思想一样\n", + " if y[i] != H: \n", + " e += D[i]\n", + " #返回预测结果和分类错误率e\n", + " #预测结果其实是为了后面做准备的,在算法8.1第四步式8.4中exp内部有个Gx,要用在那个地方\n", + " #以此来更新新的D\n", + " return np.array(predict), e" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def createSigleBoostingTree(trainDataArr, trainLabelArr, D):\n", + " '''\n", + " 创建单层提升树\n", + " :param trainDataArr:训练数据集数组\n", + " :param trainLabelArr: 训练标签集数组\n", + " :param D: 算法8.1中的D\n", + " :return: 创建的单层提升树\n", + " '''\n", + " m, n = np.shape(trainDataArr) #获得样本数目及特征数量\n", + " sigleBoostTree = {} #单层树的字典,用于存放当前层提升树的参数 \n", + " sigleBoostTree['e'] = 1 #初始化分类误差率,分类误差率在算法8.1步骤(2)(b)有提到 #误差率最高也只能100%,因此初始化为1\n", + "\n", + " for i in range(n): #对每一个特征进行遍历,寻找用于划分的最合适的特征 \n", + " for div in [-0.5, 0.5, 1.5]: #因为特征已经经过二值化,只能为0和1,因此分切分时分为-0.5, 0.5, 1.5三挡进行切割\n", + " \n", + " #在单个特征内对正反例进行划分时,有两种情况:\n", + " #可能是小于某值的为1,大于某值得为-1,也可能小于某值得是-1,反之为1\n", + " #因此在寻找最佳提升树的同时对于两种情况也需要遍历运行\n", + " #LisOne:Low is one:小于某值得是1\n", + " #HisOne:High is one:大于某值得是1\n", + " for rule in ['LisOne', 'HisOne']:\n", + " #按照第i个特征,以值div进行切割,进行当前设置得到的预测和分类错误率\n", + " Gx, e = calc_e_Gx(trainDataArr, trainLabelArr, i, div, rule, D) \n", + " if e < sigleBoostTree['e']: #如果分类错误率e小于当前最小的e,那么将它作为最小的分类错误率保存\n", + " sigleBoostTree['e'] = e\n", + " sigleBoostTree['div'] = div #同时也需要存储最优划分点、划分规则、预测结果、特征索引以便进行D更新和后续预测使用\n", + " sigleBoostTree['rule'] = rule\n", + " sigleBoostTree['Gx'] = Gx\n", + " sigleBoostTree['feature'] = i\n", + " return sigleBoostTree" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def createBosstingTree(trainDataList, trainLabelList, treeNum = 50):\n", + " '''\n", + " 创建提升树\n", + " 创建算法依据“8.1.2 AdaBoost算法” 算法8.1\n", + " :param trainDataList:训练数据集\n", + " :param trainLabelList: 训练测试集\n", + " :param treeNum: 树的层数\n", + " :return: 提升树\n", + " '''\n", + " trainDataArr = np.array(trainDataList) #将数据和标签转化为数组形式\n", + " trainLabelArr = np.array(trainLabelList)\n", + " finallpredict = [0] * len(trainLabelArr) #每增加一层数后,当前最终预测结果列表\n", + " m, n = np.shape(trainDataArr) #获得训练集数量以及特征个数\n", + " D = [1 / m] * m #依据算法8.1步骤(1)初始化D为1/N\n", + " tree = [] #初始化提升树列表,每个位置为一层\n", + "\n", + " for i in range(treeNum): #循环创建提升树\n", + " curTree = createSigleBoostingTree(trainDataArr, trainLabelArr, D) #得到当前层的提升树\n", + " alpha = 1/2 * np.log((1 - curTree['e']) / curTree['e']) #根据式8.2计算当前层的alpha\n", + " Gx = curTree['Gx'] #获得当前层的预测结果,用于下一步更新D\n", + " #依据式8.4更新D\n", + " #np.multiply(trainLabelArr, Gx):exp中的y*Gm(x),结果是一个行向量,内部为yi*Gm(xi)\n", + " #np.exp(-1 * alpha * np.multiply(trainLabelArr, Gx)):上面求出来的行向量内部全体成员再乘以-αm,然后取对数,和书上式子一样,\n", + " #只不过书上式子内是一个数,这里是一个向量\n", + " #D是一个行向量,取代了式中的wmi,然后D求和为Zm\n", + " #书中的式子最后得出来一个数w,所有数w组合形成新的D\n", + " #这里是直接得到一个向量,向量内元素是所有的w\n", + " D = np.multiply(D, np.exp(-1 * alpha * np.multiply(trainLabelArr, Gx))) / sum(D)\n", + "\n", + " curTree['alpha'] = alpha #在当前层参数中增加alpha参数,预测的时候需要用到\n", + "\n", + " tree.append(curTree) #将当前层添加到提升树索引中。\n", + "\n", + " #-----以下代码用来辅助,可以去掉---------------\n", + "\n", + " finallpredict += alpha * Gx #根据8.6式将结果加上当前层乘以α,得到目前的最终输出预测\n", + " \n", + " error = sum([1 for i in range(len(trainDataList)) if np.sign(finallpredict[i]) != trainLabelArr[i]])#计算当前预测输出与实际标签间误差\n", + " \n", + " finallError = error / len(trainDataList) #计算当前最终误差率\n", + " \n", + " if finallError == 0: \n", + " return tree #如果误差为0,提前退出即可,因为没有必要再计算算了\n", + "\n", + " print('iter:%d:%d, sigle error:%.4f, finall error:%.4f'%(i, treeNum, curTree['e'], finallError )) #打印一些信息\n", + "\n", + " return tree #返回整个提升树" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iter:0:40, sigle error:0.9030, finall error:1.0000\n", + "iter:1:40, sigle error:0.9030, finall error:1.0000\n", + "iter:2:40, sigle error:0.7532, finall error:1.0000\n", + "iter:3:40, sigle error:0.5000, finall error:1.0000\n", + "iter:4:40, sigle error:0.3641, finall error:1.0000\n", + "iter:5:40, sigle error:0.3641, finall error:1.0000\n", + "iter:6:40, sigle error:0.4307, finall error:1.0000\n", + "iter:7:40, sigle error:0.5000, finall error:1.0000\n", + "iter:8:40, sigle error:0.5348, finall error:1.0000\n", + "iter:9:40, sigle error:0.5348, finall error:1.0000\n", + "iter:10:40, sigle error:0.5174, finall error:1.0000\n", + "iter:11:40, sigle error:0.5000, finall error:1.0000\n", + "iter:12:40, sigle error:0.4913, finall error:1.0000\n", + "iter:13:40, sigle error:0.4913, finall error:1.0000\n", + "iter:14:40, sigle error:0.4956, finall error:1.0000\n", + "iter:15:40, sigle error:0.5000, finall error:1.0000\n", + "iter:16:40, sigle error:0.5022, finall error:1.0000\n", + "iter:17:40, sigle error:0.5022, finall error:1.0000\n", + "iter:18:40, sigle error:0.5011, finall error:1.0000\n", + "iter:19:40, sigle error:0.5000, finall error:1.0000\n", + "iter:20:40, sigle error:0.4995, finall error:1.0000\n", + "iter:21:40, sigle error:0.4995, finall error:1.0000\n", + "iter:22:40, sigle error:0.4997, finall error:1.0000\n", + "iter:23:40, sigle error:0.5000, finall error:1.0000\n", + "iter:24:40, sigle error:0.5001, finall error:1.0000\n", + "iter:25:40, sigle error:0.5001, finall error:1.0000\n", + "iter:26:40, sigle error:0.5001, finall error:1.0000\n", + "iter:27:40, sigle error:0.5000, finall error:1.0000\n", + "iter:28:40, sigle error:0.5000, finall error:1.0000\n", + "iter:29:40, sigle error:0.5000, finall error:1.0000\n", + "iter:30:40, sigle error:0.5000, finall error:1.0000\n", + "iter:31:40, sigle error:0.5000, finall error:1.0000\n", + "iter:32:40, sigle error:0.5000, finall error:1.0000\n", + "iter:33:40, sigle error:0.5000, finall error:1.0000\n", + "iter:34:40, sigle error:0.5000, finall error:1.0000\n", + "iter:35:40, sigle error:0.5000, finall error:1.0000\n", + "iter:36:40, sigle error:0.5000, finall error:1.0000\n", + "iter:37:40, sigle error:0.5000, finall error:1.0000\n", + "iter:38:40, sigle error:0.5000, finall error:1.0000\n", + "iter:39:40, sigle error:0.5000, finall error:1.0000\n" + ] + } + ], + "source": [ + "tree = createBosstingTree(trainData[:1000], trainLabel[:1000], 40)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'e': 0.9030000000000007,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -1.1155057874568053},\n", + " {'e': 0.9030000000000007,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -1.1155057874568053},\n", + " {'e': 0.7531541349163444,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -0.5577528937283952},\n", + " {'e': 0.49999999999998734,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 2.531308496145293e-14},\n", + " {'e': 0.3640675560049002,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 0.2788764468642026},\n", + " {'e': 0.36406755600491375,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 0.2788764468641734},\n", + " {'e': 0.4307292515771908,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 0.13943822343208276},\n", + " {'e': 0.4999999999999967,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 6.661338147750895e-15},\n", + " {'e': 0.534803184210858,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -0.0697191117160277},\n", + " {'e': 0.5348031842108822,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -0.06971911171607632},\n", + " {'e': 0.5174227212030794,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -0.03485955585802483},\n", + " {'e': 0.4999999999999897,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 2.0650148258027486e-14},\n", + " {'e': 0.49128599344776713,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 0.017429777929010157},\n", + " {'e': 0.49128599344777046,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 0.01742977792900351},\n", + " {'e': 0.4956426658293333,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 0.008714888964506272},\n", + " {'e': 0.49999999999999833,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 3.3306690738754586e-15},\n", + " {'e': 0.5021787084518743,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -0.004357444482273581},\n", + " {'e': 0.5021787084518462,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -0.00435744448221736},\n", + " {'e': 0.5010893593968911,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -0.0021787222411175367},\n", + " {'e': 0.499999999999996,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 7.993605777301064e-15},\n", + " {'e': 0.49945531965519235,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 0.001089361120532848},\n", + " {'e': 0.49945531965518947,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 0.0010893611205386087},\n", + " {'e': 0.49972765974678773,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 0.0005446805602893058},\n", + " {'e': 0.4999999999999868,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 2.6423307986078028e-14},\n", + " {'e': 0.5001361701367073,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -0.00027234028014770303},\n", + " {'e': 0.5001361701367077,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -0.0002723402801485917},\n", + " {'e': 0.5000680850696047,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -0.00013617014005092053},\n", + " {'e': 0.4999999999999868,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 2.6423307986078028e-14},\n", + " {'e': 0.49996595746504413,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 6.808507001689984e-05},\n", + " {'e': 0.4999659574650537,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 6.80850699978066e-05},\n", + " {'e': 0.49998297873250686,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 3.4042534999414375e-05},\n", + " {'e': 0.49999999999999656,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 6.883382752675923e-15},\n", + " {'e': 0.5000085106337425,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -1.702126748666134e-05},\n", + " {'e': 0.5000085106337441,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -1.702126748977007e-05},\n", + " {'e': 0.5000042553168718,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -8.51063374371101e-06},\n", + " {'e': 0.5000000000000242,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': -4.8405723873659167e-14},\n", + " {'e': 0.4999978723415619,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 4.255316876275977e-06},\n", + " {'e': 0.49999787234155324,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 4.255316893595309e-06},\n", + " {'e': 0.49999893617077146,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 2.1276584570825204e-06},\n", + " {'e': 0.4999999999999872,\n", + " 'div': -0.5,\n", + " 'rule': 'HisOne',\n", + " 'Gx': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n", + " 'feature': 0,\n", + " 'alpha': 2.575717417130297e-14}]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tree\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(x, div, rule, feature):\n", + " '''\n", + " 输出单独层预测结果\n", + " :param x: 预测样本\n", + " :param div: 划分点\n", + " :param rule: 划分规则\n", + " :param feature: 进行操作的特征\n", + " :return:\n", + " '''\n", + " if rule == 'LisOne': #依据划分规则定义小于及大于划分点的标签 \n", + " L = 1; H = -1\n", + " else: \n", + " L = -1; H = 1\n", + "\n", + " if x[feature] < div: \n", + " return L #判断预测结果\n", + " else: \n", + " return H" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "errorCnt = 0\n", + "for i in range(len(testData[:1000])):\n", + " result = 0 #预测结果值,初始为0\n", + " for curTree in tree: #依据算法8.1式8.6.预测式子是一个求和式,对于每一层的结果都要进行一次累加\n", + "\n", + " div = curTree['div'] #获取该层参数\n", + " rule = curTree['rule']\n", + " feature = curTree['feature']\n", + " alpha = curTree['alpha']\n", + " \n", + " result += alpha * predict(testData[i], div, rule, feature) #将当前层结果加入预测中\n", + " \n", + " if np.sign(result) != testLabel[i]: \n", + " errorCnt += 1 #预测结果取sign值,如果大于0 sign为1,反之为0\n", + "accuracy = 1 - errorCnt / 1000 #返回准确率\n", + "accuracy" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "position": { + "height": "198px", + "left": "1166px", + "right": "20px", + "top": "120px", + "width": "350px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/__pycache__/minst.cpython-36.pyc b/__pycache__/minst.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c35fecae9713845bc2fd60e1595592ad89e0c48 GIT binary patch literal 1054 zcmZ`%&ubGw6rP#=+0s^#Di(SOJqQa@1aF}f#hyfZ=|Kr8vdwJErkl-nb^^9+pps}o zDyYyPda!yZcxWq#Kib;<171Au)$TUAc=OVeZzhe6q66RCZ{L3V=6i4EYJY!k{=?V& z4+Wv`sB6JHx&{abAW)TJO6oX=s4|5ttpzz$5E8LWfDX6;2){w#h~gT?Xbx2sfXZ=% zYPhQ1+lsUzsi6rp{ido%dQqvNqDl#TGa^itdBW~QN>PLDv^t6ms#D_u83KJx)&q?W znn-HQ|7eJ;(}>if#&xKn40Zk{^6!z;tW@p_CDn!Bg%Qb>HouJ`B~oVzG~8493~lvh zU?q>%oBR7|W94w~qfBH2o7ttztm`?GcFD;$H}1DJM=$DaS@Y9&a!~IUQ=8j&XIwuk zNcwy`d9rc1yP7P2Nmd)(I?tYQJSmjypGxNN3iGp>bnRXGc&qjDVe)J>U0*rcJOD0> zEu9Iu&3J}6HkCe)@nwdgp@Ilv5r7Jq0)&GQ=1_#D`>L3u2qyoOET~iHEwXT|xIVW? zOh&K7ieD))aR+4hc?sA=Hh;4cEOLkCkM>?Qw_Yck8;3jVX=5jSzm_k#e#l3I#pB*F z&kcE@Tnff7h#kfDI$9d`$~K*ViHweU<$~>n<3KvXmhd|Hhhq&g((y15>3C2$ZhNL^ zUhO!yaBCSP7G|PJi!kvg6Ib@sKQqLuxXKp+CzdQD)&d4C$7(rn{J2Mq&~tq!jJ1$6 zH-JarxjfeG0KU_9eKR&Yw;^YCjymr7eV92zB(F1;Gi44~OlDcEipn{oP+_-#{ADdR zJJS*7!x0F`G>M8-Vv+$ofK5Dnf^+aZi~AtU&Vy5I L&l#6HKnDE+#MK@G literal 0 HcmV?d00001 diff --git a/minst.py b/minst.py new file mode 100644 index 0000000..a5cdabf --- /dev/null +++ b/minst.py @@ -0,0 +1,32 @@ + +# coding: utf-8 + + +def loadData(fileName,data_bin=0,label_bin=0): + ''' + 加载文件 + :param fileName:要加载的文件路径 + :param data_bin:data是否二值化 + :param label_bin:label是否二值化 + :return: 数据集和标签集 + ''' + print('start read file') + #存放数据及标记 + dataArr = []; labelArr = [] + #读取文件 + fr = open(fileName) + #遍历文件中的每一行 + for line in fr.readlines(): #获取当前行,并按“,”切割成字段放入列表中 + curLine = line.strip().split(',') + if data_bin==0: + dataArr.append([int(num) for num in curLine[1:]]) + if data_bin==1: + dataArr.append([int(int(num) > 128) for num in curLine[1:]]) + if label_bin==0: + labelArr.append(int(curLine[0])) + if label_bin==1: + if int(curLine[0]) == 0: + labelArr.append(1) + else: + labelArr.append(0) + return dataArr, labelArr