图论与演算法之间的相互应用

Disclaimer: 今年大概撑不到连续 30 天...大概能写多少就是多少吧 哈哈

1 图论为什麽重要

1.1 图论可以帮助你看清问题的本质

图 (Graph) 是一种抽象的数学模型,它可以用来描述东西与东西之间的关联。这个『东西』根据想要解决的问题而定,可以有很多意义。而图论 (Graph Theory) 便是一类将事物简化成『东西』与『关联』的模型之後,针对其结构和性质而得出的一套数学理论。

https://ithelp.ithome.com.tw/upload/images/20210915/20112376POLu7GJH1Z.png

https://ithelp.ithome.com.tw/upload/images/20210915/20112376c9pswJBj5x.png

图一:上面绘制的两张图,都是有 6 个点的完全图,他们虽然看起来不太一样,但是结构相同:任何两个点之间都连有一条边。

1.2 资讯科学里面哪里有图论

简短的答案:到处都是。比方说最直接的网路模型(设备与设备之间的资料传输连结),我们可以利用化简後的图论模型找出服务器流量的瓶颈在哪里、也可以设计出当某些机器过载的时候资料该如何绕道而行。在非传统关联式资料库 (NoSQL) 中,也有一些专门为稀疏关联设计出的图论资料库模型,比方说 GraphQL 等,在查询与存储资料的效能中,比起传统的关联式资料库更能获得一些优势。在编译器的最佳化过程中,也会对如控制流图和资料流图等等进行分析,让该程序编译後执行效率得以提升。此外,有一些产品天生就与图论有关,比方说地图的自动导航功能:该如何引导使用者用最快速度抵达目的地;在仓储和物流系统中,资源和货品该如何调度;影像和图像的匹配与修改,也可以透过图论模型来设计演算法。

1.x 冷笑话

如果你写了一份程序码,放了很久很久,它就会变成一张图了。为什麽?因为老码是图啊...

2 这个系列文打算分享什麽

会用到图论的常见演算法问题当中的理论和解法。图论的应用层面有两种,其中一种应用是把一个题目使用图论的模型来找出其特性,并且根据这些特性设计出演算法解决该问题。另一种应用则是建立图论模型後,使用已知的工具(比方说线性规划、矩阵相乘等等)来解决这些已知的图论问题。我相信有些朋友会想知道关於 Leetcode 上面的图论题目要怎麽解,所以如果刚好有涵盖到相关内容的话,我也会用 Leetcode 的题目作为举例,这样大概会有心理上比较踏实的感觉。

如果真的要说实作的技术成分的话,藉由这 30 天,我这次想要学学用 python 的 networkx 这个 package 练习画图。


<<:  Day 2 : 建立Python开发环境吧(Windows)!

>>:  Day 03 安装python、需要的package以及VS Code等环境建置

cmd 指令

记录一些常用指令 dir 查看目前目录 md 建立资料夹/档案 rd 删除资料夹/档案 cd 移动位...

#2. Blurring Loading Image(原生JS版), Vercel 出乎意料好用

将专案部署到Vercel 挑战开跑这两天,遇到最困扰的就是无法顺利将专案部署到GitHub Page...

[DAY-15] 认知科学中的成功之路

一半拉! 加油! YA~ 心理学的研究 其实可以协助大家思考职涯 BUT 很少人接触这方面的讯息 ...

Day29 参加职训(机器学习与资料分析工程师培训班),Tensorflow.keras & Pytorch

上午: Python机器学习套件与资料分析 使用tensorflow.keras 测试不同optim...

Day0 前言+碎念(可跳过

嗨~大家好!! 我是饿麟,你们也可以叫我小饿 今天是铁人赛开赛的第1天 身为一个小白,我正思考着也许...