图论讲解:简单路径、连通性与拓扑排序

版权申诉
0 下载量 77 浏览量 更新于2024-07-03 收藏 951KB PDF 举报
"这份英文教学课件主要涵盖了数据结构中的图(Graph)相关的概念,包括简单路径、连通性、图遍历、拓扑排序以及加权图等内容。" 在数据结构领域,图是一种非常重要的抽象数据类型,它由一组顶点(vertices)和连接这些顶点的边(edges)组成。在“19_Graph_02.pdf”这份文档中,重点讲解了以下几个关键知识点: 1. **简单路径(Simple Path)**:一个简单路径是一系列顶点的序列,其中任意两个相邻的顶点之间有一条边相连,并且路径中没有重复的顶点。例如,从Seattle到San Francisco再到Dallas的路径{SEA, SLC, DAL}是一个简单路径。 2. **连通性(Connectivity)**:在无向图中,如果图中任意两个顶点间都存在路径,则称图是连通的。连通性的研究有助于理解图的结构和分块。 3. **图遍历(Graph Traversals)**:图遍历是指按照特定顺序访问图中所有顶点的过程,常见的有深度优先搜索(DFS)和广度优先搜索(BFS)。这些方法常用于搜索问题、求解最短路径等。 4. **拓扑排序(Topological Sorting)**:对于有向无环图(DAG),拓扑排序是将所有顶点排成线性顺序,使得对于每一条有向边 (u, v),都有 u 在排序序列中出现在 v 之前。这对于任务调度、依赖关系分析等问题非常有用。 5. **加权图(Weighted Graphs)**:加权图是每个边都有一个数值(权重或成本)的图。例如,交通网络中的路线图,每条边代表一段路程并附带时间和距离成本。计算最短路径时需要用到加权图的概念。 6. **路径长度和成本**:路径长度是路径中边的数量,而路径成本则是路径上所有边的成本之和。在加权图中,这两个概念常用于优化问题,比如寻找最低成本的旅行路线。 7. **简单路径与环(Simple Paths and Cycles)**:简单路径不包含重复顶点,而环是路径的起始和结束顶点相同且至少包含三个顶点的特殊路径。在某些应用中,如最小生成树算法,需要避免环的出现。 通过学习这些概念,不仅可以加深对数据结构的理解,也能为解决实际问题如网络路由、社交网络分析、物流优化等提供理论基础。同时,掌握这些知识也是计算机科学教育和面试中不可或缺的部分。

下面这段代码的作用是什么def setup_model(self): self.enumerate_unique_labels_and_targets() self.model = CasSeqGCN(self.args, self.number_of_features + self.args.number_of_hand_features, self.number_of_nodes) #给当前类中模型主体进行初始化,初始化为上面的模型 def create_batches(self): N = len(self.graph_paths) train_start, valid_start, test_start = \ 0, int(N * self.args.train_ratio), int(N * (self.args.train_ratio + self.args.valid_ratio)) train_graph_paths = self.graph_paths[0:valid_start] valid_graph_paths = self.graph_paths[valid_start:test_start] test_graph_paths = self.graph_paths[test_start: N] self.train_batches, self.valid_batches, self.test_batches = [], [], [] for i in range(0, len(train_graph_paths), self.args.batch_size): self.train_batches.append(train_graph_paths[i:i+self.args.batch_size]) for j in range(0, len(valid_graph_paths), self.args.batch_size): self.valid_batches.append(valid_graph_paths[j:j+self.args.batch_size]) for k in range(0, len(test_graph_paths), self.args.batch_size): self.test_batches.append(test_graph_paths[k:k+self.args.batch_size]) def create_data_dictionary(self, edges, features): """ creating a data dictionary :param target: target vector :param edges: edge list tensor :param features: feature tensor :return: """ to_pass_forward = dict() to_pass_forward["edges"] = edges to_pass_forward["features"] = features return to_pass_forward def create_target(self, data): """ Target createn based on data dicionary. :param data: Data dictionary. :return: Target size """ return torch.tensor([data['activated_size']])

2023-05-18 上传

将这两个代码结合import cv2 import numpy as np import urllib.request import tensorflow as tf # 下载DeepLabv3+模型权重文件 model_url = "http://download.tensorflow.org/models/deeplabv3_mnv2_pascal_train_aug_2018_01_29.tar.gz" tar_filename = "deeplabv3_mnv2_pascal_train_aug.tar.gz" urllib.request.urlretrieve(model_url, tar_filename) # 解压缩 with tarfile.open(tar_filename, "r:gz") as tar: tar.extractall() model_filename = "deeplabv3_mnv2_pascal_train_aug/frozen_inference_graph.pb" # 加载模型 graph = tf.Graph() with graph.as_default(): od_graph_def = tf.GraphDef() with tf.io.gfile.GFile(model_filename, 'rb') as fid: serialized_graph = fid.read() od_graph_def.ParseFromString(serialized_graph) tf.import_graph_def(od_graph_def, name='') # 读取图像 image_path = "your_image.jpg" image = cv2.imread(image_path) # 进行图像分割 with tf.compat.v1.Session(graph=graph) as sess: input_tensor = graph.get_tensor_by_name('ImageTensor:0') output_tensor = graph.get_tensor_by_name('SemanticPredictions:0') output = sess.run(output_tensor, feed_dict={input_tensor: image}) # 解码并可视化分割结果 segmentation_mask = np.squeeze(output) segmentation_mask = np.uint8(segmentation_mask) segmentation_mask = cv2.resize(segmentation_mask, (image.shape[1], image.shape[0]), interpolation=cv2.INTER_NEAREST) # 显示原始图像和分割结果 cv2.imshow("Image", image) cv2.imshow("Segmentation Mask", segmentation_mask) cv2.waitKey(0) cv2.destroyAllWindows() model1 = models.CellposeModel(gpu=True, model_type='livecell') model2 = models.Cellpose(gpu=True,model_type='nuclei') model3= models.Cellpose(gpu=True,model_type='cyto2') 集成DeepLabv3+模型和cellpose模型

2023-07-14 上传
2023-07-11 上传