{"id":9445,"date":"2020-08-26T07:22:05","date_gmt":"2020-08-26T07:22:05","guid":{"rendered":"https:\/\/www.experfy.com\/blog\/?p=9445"},"modified":"2023-11-15T15:13:46","modified_gmt":"2023-11-15T15:13:46","slug":"what-is-graph-theory-and-why-should-you-care","status":"publish","type":"post","link":"https:\/\/www.experfy.com\/blog\/bigdata-cloud\/what-is-graph-theory-and-why-should-you-care\/","title":{"rendered":"What is Graph Theory, and why should you care?"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"9445\" class=\"elementor elementor-9445\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-11631460 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"11631460\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-77576326\" data-id=\"77576326\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-558cfb91 elementor-widget elementor-widget-text-editor\" data-id=\"558cfb91\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p class=\"has-medium-font-size\"><strong>From graph theory to path optimization<\/strong><\/p>\n\n\n\n<p>Graph theory might sound like an intimidating and abstract topic to you, so why should you even spend your time reading an article about it? However, although it might not sound very applicable, there are actually an abundance of useful and important applications of graph theory! In this article, I will try to explain briefly what some of these applications are. In doing so, I will do my best to convince you that having at least some basic knowledge of this topic can be useful in solving some interesting problems you might come across.<\/p>\n\n\n\n<p>In this article, I will through a concrete example show how a route planning\/optimization task can be formulated and solved using graph theory. More specifically, I will consider a large warehouse consisting of 1000s of different items in various locations\/pickup points. The challenge here is, given a list of items, which path should you follow through the warehouse to pickup all items, but at the same time minimize the total distance traveled? For those of you familiar with these kind of problems, this has quite some resemblance to the famous\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Travelling_salesman_problem\" target=\"_blank\" rel=\"noreferrer noopener\">traveling salesman problem<\/a>. (A well known problem in\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Combinatorial_optimization\" target=\"_blank\" rel=\"noreferrer noopener\">combinatorial optimization<\/a>, important in\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Theoretical_computer_science\" target=\"_blank\" rel=\"noreferrer noopener\">theoretical computer science<\/a>\u00a0and\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Operations_research\" target=\"_blank\" rel=\"noreferrer noopener\">operations research<\/a>).<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-82fe91b elementor-widget elementor-widget-text-editor\" data-id=\"82fe91b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p>As you might have realized, the goal of this article is not to give a comprehensive introduction to graph theory (which would be quite a tremendous task). Through a real-world example, I will rather try to convince you that knowing at least some\u00a0<em>basics<\/em>\u00a0of graph theory can prove to be very useful!<\/p>\n\n\n\n<p>I will start with a brief historical introduction to the field of graph theory, and highlight the importance and the wide range of useful applications in many vastly different fields. Following this more general introduction, I will then shift focus to the warehouse optimization example discussed above.<\/p>\n\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5480a67 elementor-widget elementor-widget-heading\" data-id=\"5480a67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">\n<h1 class=\"wp-block-heading\" id=\"702a\">The history of Graph Theory<\/h1>\n<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7ba7075 elementor-widget elementor-widget-text-editor\" data-id=\"7ba7075\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The basic idea of graphs were first introduced in the 18th century by the Swiss mathematician\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Leonhard_Euler\" target=\"_blank\" rel=\"noreferrer noopener\">Leonhard Euler<\/a>, one of the most eminent mathematicians of the 18th century (and of all time, really). His work on the famous \u201c<a href=\"https:\/\/en.wikipedia.org\/wiki\/Seven_Bridges_of_K%C3%B6nigsberg\" target=\"_blank\" rel=\"noreferrer noopener\">Seven Bridges of K\u00f6nigsberg problem<\/a>\u201d, are commonly quoted as origin of\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Graph_theory\" target=\"_blank\" rel=\"noreferrer noopener\">graph theory<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The city of K\u00f6nigsberg in Prussia (now Kaliningrad, Russia) was set on both sides of the Pregel River, and included two large islands \u2014 Kneiphof and Lomse \u2014 which were connected to each other, or to the two mainland portions of the city, by seven bridges (as illustrated in the below figure to the left). The problem was to devise a walk through the city that would cross each of those bridges once and only once.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Euler, recognizing that the relevant constraints were the four bodies of land &amp; the seven bridges, drew out the first known visual representation of a modern graph. A modern graph, as seen in bottom-right image, is represented by a set of points, known as\u00a0<strong>v<\/strong>ertices or nodes, connected by a set of lines known as edges.<\/p>\n<!-- \/wp:paragraph -->\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5e29bce elementor-widget elementor-widget-image\" data-id=\"5e29bce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/837\/1*UEzIUIOJndIyRyjGGUdS0A.jpeg\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-15b8d43 elementor-widget elementor-widget-text-editor\" data-id=\"15b8d43\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<!-- wp:paragraph -->\n<p>This abstraction from a concrete problem concerning a city and bridges etc. to a graph makes the problem tractable mathematically, as this abstract representation includes only the information important for solving the problem. Euler actually proved that this specific problem has no solution. However, the difficulty he faced was the\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Topology#Motivation\" target=\"_blank\" rel=\"noreferrer noopener\">development of a suitable technique of analysis<\/a>, and of subsequent tests that established this assertion with mathematical rigor. From there, the branch of math known as graph theory lay dormant for decades. In modern times, however, it\u2019s applications are finally exploding.<\/p>\n<!-- \/wp:paragraph -->\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f1c7233 elementor-widget elementor-widget-heading\" data-id=\"f1c7233\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><!-- wp:heading {\"level\":1} -->\n<h1 id=\"4914\">Introduction to Graph Theory<\/h1>\n<!-- \/wp:heading --><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-af27b37 elementor-widget elementor-widget-text-editor\" data-id=\"af27b37\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>As mentioned previously, I do not aim to give a comprehensive introduction to graph theory. The following section still contains some of the basics when it comes to different kind of graphs etc., which is of relevance to the example we will discuss later on path optimization.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><em>Graph Theory<\/em>\u00a0is ultimately the study of\u00a0<strong>relationships<\/strong>. Given a set of nodes &amp; connections, which can abstract anything from city layouts to computer data, graph theory provides a helpful tool to quantify &amp; simplify the many moving parts of dynamic systems. Studying graphs through a framework provides answers to many arrangement, networking, optimization, matching and operational problems.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-56e5bed elementor-widget elementor-widget-text-editor\" data-id=\"56e5bed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<!-- wp:paragraph -->\n<p>Graphs can be used to model many types of relations and processes in physical, biological, social and information systems, and has a wide range of useful applications such as e.g.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol>\n<li>Finding communities in networks, such as social media (friend\/connection recommendations), or in the recent days for possible spread of COVID19 in the community through contacts.<\/li>\n<li>Ranking\/ordering hyperlinks in search engines.<\/li>\n<li>GPS\/Google maps to find the shortest path home.<\/li>\n<li>Study of molecules and atoms in chemistry.<\/li>\n<li>DNA sequencing<\/li>\n<li>Computer network security<\/li>\n<li>\u2026.. and many more\u2026.<\/li>\n<\/ol>\n<!-- \/wp:list -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-027c15c elementor-widget elementor-widget-image\" data-id=\"027c15c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/220\/0*F3kAVn8KNQVL0BsY.png\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c798f25 elementor-widget elementor-widget-image\" data-id=\"c798f25\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1185\/1*2ps4KlEODqLbgYt9u5Li7w.png\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fe41e7b elementor-widget elementor-widget-text-editor\" data-id=\"fe41e7b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>As mentioned, there are several types of graphs that describe different kind of problems (and the constraints within them). A nice walk-through of various types of graphs can also be found in a\u00a0<a href=\"http:\/\/get%20started%20with%20graph%20theory%20a%20brief%20introductiontowardsdatascience.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">previous article<\/a>\u00a0by\u00a0<a href=\"https:\/\/towardsdatascience.com\/@kelvinjose\" target=\"_blank\" rel=\"noreferrer noopener\">Kelvin Jose,<\/a>\u00a0and the below section represents a subset of that article.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-524e636 elementor-widget elementor-widget-heading\" data-id=\"524e636\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><!-- wp:heading -->\n<h2 id=\"3efc\"><em>Types of Graphs<\/em><\/h2>\n<!-- \/wp:heading --><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-1b33a16 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1b33a16\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5b80d9b\" data-id=\"5b80d9b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-14c0908 elementor-widget elementor-widget-text-editor\" data-id=\"14c0908\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><em>There are different types of graph representations available and we have to make sure that we understand the kind of graph we are working with when programmatically solving a problem which includes graphs.<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul>\n<li><strong><em>Undirected Graphs<\/em><\/strong><\/li>\n<\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><em>As the name shows, there won\u2019t be any specified directions between nodes. So an edge from node A to B would be\u00a0<\/em><strong><em>identical<\/em><\/strong><em>\u00a0to the edge from B to A.<\/em><\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6c93160 elementor-widget elementor-widget-image\" data-id=\"6c93160\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/761\/0*vghN_xf0HkkdR_68.png\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8466755 elementor-widget elementor-widget-text-editor\" data-id=\"8466755\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><em>In the above graph, each node could represent different cities and the edges show the bidirectional roads.<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul>\n<li><strong><em>Directed Graphs (DiGraphs)<\/em><\/strong><\/li>\n<\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><em>Unlike undirected graphs, directed graphs have orientation or\u00a0<\/em><strong><em>direction<\/em><\/strong><em>\u00a0among different nodes. That means if you have an edge from node A to B, you can move only from A to B.<\/em><\/p>\n<!-- \/wp:paragraph -->\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7bf26dd elementor-widget elementor-widget-image\" data-id=\"7bf26dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1075\/0*r5rJaj2uE4f977JO.png\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1ee6b5d elementor-widget elementor-widget-text-editor\" data-id=\"1ee6b5d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><em>Like the previous example, if we consider nodes as cities, we have a direction from city 1 to 2. That means, you can drive from city 1 to 2 but not back to city 1, because there is no direction back to city 1 from 2. But if we closely examine the graph, we can see cities with bi-direction. For example cities 3 and 4 have directions to both sides.<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul>\n<li><strong><em>Weighted Graphs<\/em><\/strong><\/li>\n<\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><em>Many graphs can have edges containing a weight associated to represent a real world implication such as cost, distance, quantity etc \u2026<\/em><\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c6f9ee elementor-widget elementor-widget-image\" data-id=\"5c6f9ee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/579\/0*VML2uj9Frs7f13MK.png\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-45b139c elementor-widget elementor-widget-text-editor\" data-id=\"45b139c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Weighted_graph\" target=\"_blank\" rel=\"noreferrer noopener\"><em>Weighted graphs<\/em><\/a><em>\u00a0could be either directed or undirected graph. The one we have in this example is an undirected weighted graph. The cost (or distance) from the green to the orange node (and vice versa) is 3. Like our previous example, if you want to travel between two cities, say city green and orange, we would have to drive 3 miles. These metrics are self-defined and could be changed according to the situations. For a more elaborated example, consider you have to travel to city pink from green. If you look at the city graph, we can\u2019t find any direct roads or edges between the two cities. So what we can do is to travel via another city. The most promising routes would be starting from green to pink via orange and blue. If the weights are costs between cities, we would have to spend 11$ to travel via blue to reach pink but if we take the other route via orange, we would only have to pay 10$ for the trip.<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><em>There may be several weights associated with each edge, including distance, travel time, or monetary cost. Such weighted graphs are commonly used to program GPS\u2019s, and travel-planning search engines that compare flight times and costs.<\/em><\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cfa9f02 elementor-widget elementor-widget-heading\" data-id=\"cfa9f02\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Graph Theory \u2192 Route optimization<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a485f65 elementor-widget elementor-widget-text-editor\" data-id=\"a485f65\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<!-- wp:paragraph -->\n<p>Having (hopefully) convinced you that graph theory is worth knowing something about, it is now time to focus on our example case of route planning when picking items in our warehouse.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1aac0c8 elementor-widget elementor-widget-heading\" data-id=\"1aac0c8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><h2 id=\"2bd1\">Challenge:<\/h2>\n<!-- \/wp:heading --><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f6ee39f elementor-widget elementor-widget-text-editor\" data-id=\"f6ee39f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The challenge here is that given a \u201cpicking list\u201d as input, we should find the shortest route that passes all the pickup points, but also complies to the restrictions with regard to where it is possible\/allowed to drive. The assumptions and constraints here are that crossing between corridors in the warehouse is only allowed at marked \u201cturning points\u201d. Also, the direction of travel must follow the specified legal driving direction for each corridor.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e5ce061 elementor-widget elementor-widget-heading\" data-id=\"e5ce061\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\n<h2 id=\"81a5\">Solution:<\/h2>\n<!-- \/wp:heading -->\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-103f840 elementor-widget elementor-widget-text-editor\" data-id=\"103f840\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>This problem can be formulated as an optimization problem in graph theory. All pickup points in the warehouse form a \u201cnode\u201d in the graph, where the edges represent permitted lanes\/corridors and distances between the nodes. To introduce the problem more formally, let us start from a simplified example.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The graph below represents 2 corridors with 5 shelves\/pickup-points per corridor. All shelves are here represented as a node in the graph, with an address ranging from 1\u201310. The arrows indicate the permitted driving direction, where the double arrows indicate that you can drive either way. Simple enough, right?<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63c1852 elementor-widget elementor-widget-image\" data-id=\"63c1852\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/474\/1*Yqj2dnYgeYvUG4LEIyy_Xw.jpeg\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-633a0f0 elementor-widget elementor-widget-text-editor\" data-id=\"633a0f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Being able to represent the permitted driving routes in the form of a graph, means that we can use mathematical techniques known from graph theory to find the optimal \u201cdriving route\u201d between the nodes (i.e., the stock shelves in our warehouse).<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The example graph above can be described mathematically through an \u00ab<a href=\"https:\/\/en.wikipedia.org\/wiki\/Adjacency_matrix\" target=\"_blank\" rel=\"noreferrer noopener\">adjacency matrix<\/a>\u00bb. The adjacency matrix to the right in the below figure is thus a representation of our \u00abwarehouse graph\u00bb, which indicates all permitted driving routes between the various nodes.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6af842c elementor-widget elementor-widget-image\" data-id=\"6af842c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1170\/1*S3Mw_wfZyQm1p3URyQg_hg.jpeg\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a2e26e elementor-widget elementor-widget-text-editor\" data-id=\"7a2e26e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<!-- wp:list -->\n<ul>\n<li><strong>Example 1:<\/strong>\u00a0You are allowed to travel from node 2 \u2192 3, but not from 3 \u2192 2. This is indicated by the \u201c1\u201d in the adjacency matrix to the right.<\/li>\n<li><strong>Example 2:<\/strong>\u00a0You are allowed to go from both node 8 \u2192 3, and from 3 \u2192 8, again indicated by the \u201c1\u201d`s in the adjacency matrix (which in this case is symmetric when it comes to travel direction).<\/li>\n<\/ul>\n<!-- \/wp:list -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b737078 elementor-widget elementor-widget-heading\" data-id=\"b737078\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><h2 id=\"3c60\">Back to our warehouse problem:<\/h2>\n&lt;!-- \/wp:heading --<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fa7d966 elementor-widget elementor-widget-text-editor\" data-id=\"fa7d966\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>A real warehouse is of course bigger and more complex than the above example. However, the main principles of how to represent the problem through a graph remains the same. To make the real problem slightly simpler (and more visually suitable for this article), I have reduced the total number of shelves\/pickup-points (approximately every 50th shelf included, marked with black squares in the below figure). All pickup points are given an address (\u201cnode number\u201d) from 1\u201374. The other relevant constraints mentioned earlier, such as permitted driving directions in each of the corridors, as well as the allowed \u201cturning points\u201d and shortcuts between the corridors are also indicated in the figure..<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:separator --><hr class=\"wp-block-separator\" \/><!-- \/wp:separator -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ec38854 elementor-widget elementor-widget-image\" data-id=\"ec38854\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/727\/1*TxGVvJej0nsWkf_JmBIpNA.jpeg\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b31e0d6 elementor-widget elementor-widget-text-editor\" data-id=\"b31e0d6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<!-- wp:paragraph -->\n<p>The next step is then to represent this graph in the form of a adjacency matrix. Since we are here interested in finding both the optimal route and total distance, we must also include the driving distance between the various nodes in the matrix.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b9b4fcc elementor-widget elementor-widget-image\" data-id=\"b9b4fcc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/525\/1*HCKIDM_N7Uq2UvZNz1rMDQ.jpeg\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-01c0a9a elementor-widget elementor-widget-text-editor\" data-id=\"01c0a9a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<!-- wp:paragraph -->\n<p>This matrix indicates all constraints with regard to both the permitted direction of travel, which \u201cshortcuts\u201d are permitted, any other restrictions as well as the driving distance between the nodes (illustrated through the color). As an example, the \u201cshortcut\u201d between nodes 21 and 41 shown in the graph representation can clearly be identified also in the adjacency matrix. The \u201cwhite areas\u201d of the matrix represents the paths that are not allowed, indicated through an \u201cinfinite\u201d distance between those nodes.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1cfe57f elementor-widget elementor-widget-heading\" data-id=\"1cfe57f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">From graph representation to path optimization<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-66c3ecf elementor-widget elementor-widget-text-editor\" data-id=\"66c3ecf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<!-- wp:paragraph -->\n<p>Just having an abstracted representation of our warehouse in the form of a graph, does of course not solve our actual problem. The idea is rather that through this graph representation, we can now use the mathematical framework and algorithms from graph theory to solve it!<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Since graph optimization is a well-known field in mathematics, there are several methods and algorithms that can solve this type of problem. In this example case, I have based the solution on the \u201c<a href=\"https:\/\/en.wikipedia.org\/wiki\/Floyd%E2%80%93Warshall_algorithm\" target=\"_blank\" rel=\"noreferrer noopener\">Floyd-Warshall algorithm<\/a>\u201d, which is a well known\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Algorithm\" target=\"_blank\" rel=\"noreferrer noopener\">algorithm<\/a>\u00a0for finding\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Shortest_path_problem\" target=\"_blank\" rel=\"noreferrer noopener\">shortest paths<\/a>\u00a0in a\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Weighted_graph\" target=\"_blank\" rel=\"noreferrer noopener\">weighted graph<\/a>. A single execution of the algorithm will find the lengths (summed weights) of shortest paths between all pairs of nodes. Although it does not return details of the paths themselves, it is possible to reconstruct the paths with simple modifications to the algorithm.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e047333 elementor-widget elementor-widget-text-editor\" data-id=\"e047333\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>If you give this algorithm as input a \u201cpicking order list\u201d where you go through a list of items you want to pick, you should then be able to obtain the optimal route which minimize the total driving distance to collect all items on the list.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Example:\u00a0<\/strong>Let us start by visualizing the results for a (short) picking list as follows: Start from node \u00ab0\u00bb, pick up items at location\/node 15, 45, 58 and 73 (where these locations are illustrated in the figure below). The algorithm finds the shortest allowable route between these points through calculating the \u201cdistance matrix\u201d,\u00a0<strong>D<\/strong>, which can then be used to determine the total driving distance between all locations\/nodes in the picking list.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul>\n<li>Step 1:\u00a0<strong>D<\/strong>[0][15] \u2192 90 m<\/li>\n<li>Step 2:\u00a0<strong>D<\/strong>[15][45] \u219252 m<\/li>\n<li>Step 3:\u00a0<strong>D<\/strong>[45][58] \u2192 34 m<\/li>\n<li>Step 4:\u00a0<strong>D<\/strong>[58][73] \u2192 92 m<\/li>\n<\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>Total distance = 268m<\/strong><\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-46067d8 elementor-widget elementor-widget-image\" data-id=\"46067d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/747\/1*nvBm_0Om2fAWUKZbRvMeFw.jpeg\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-de75138 elementor-widget elementor-widget-text-editor\" data-id=\"de75138\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Have tested several \u201cpicking lists\u201d as input and verifying the proposed driving routes and calculated distance, the algorithm has been able to find the optimal route in all cases. The algorithm respects all the imposed constraints, such as the permitted direction of travel, and uses all permitted \u201cshortcuts\u201d to minimize the total distance.<\/p>\n<!-- \/wp:paragraph -->\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e8e025f elementor-widget elementor-widget-heading\" data-id=\"e8e025f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">From path optimization to useful insights<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4399be4 elementor-widget elementor-widget-text-editor\" data-id=\"4399be4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>As shown through the above example, we have developed an optimization algorithm that calculates the optimal driving route via all points on a picking order list (for a simplified version of the warehouse). By providing a list of picking orders as input, one can thus relatively easily calculate statistics on typical mileage per. picking order. These statistics can then also be filtered on various information such as item type, customer, date, etc. In the following section, I have thus picked a few examples on how one can extract interesting statistics from such a path optimization tool.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>In doing this, I first generated 10.000 picking order lists where the number of items per list ranges from 1\u201330 items, located at random pickup points in the warehouse (address 3\u201374 in the figure above). By performing the path optimization procedure over all these picking list, we can then extract some interesting statistics.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Example 1:\u00a0<\/strong>Calculate mileage as a function of the number of units per. picking order list. Here, you would naturally assume that the total mileage increases the more items you have to pick. But, at some level, this will start to flatten out. This is due to the fact that one eventually has to stop by all the corridors in the warehouse to pick up goods, which then prevents us from making use of clever \u201cshortcuts\u201d to minimize the total driving distance. This tendency can be illustrated in the figure below to the left, which illustrates that for more than approximately 15\u201320 units per picking order, adding extra items does not make the total mileage much longer (as you have to drive through all corridors of the warehouse anyway). Note that the figures show a \u201cdensity plot\u201d of the distribution of typical mileage per. picking orders list<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b3f2165 elementor-widget elementor-widget-text-editor\" data-id=\"b3f2165\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Another interesting statistic, which shows the same trend, is the distribution of driving distance per picked item in the figure to the right. Here, we see that for picking lists with few items, the typical mileage per. item is relatively high (with a large variance, depending on how \u201clucky\u201d we are with some items being located in the same corridor etc.). For picking lists with several items though, the mileage per. item is gradually decreasing. This type of statistic can thus be interesting to investigate closer, in order to optimize how many items each picking order list should contain in order to minimize the mileage per picked item.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1635e9c elementor-widget elementor-widget-image\" data-id=\"1635e9c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/942\/1*6hv8WajKs_9vMeloUBei9Q.jpeg\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c2c907 elementor-widget elementor-widget-text-editor\" data-id=\"4c2c907\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>Example 2:\u00a0<\/strong>Here I have used real-world data that also contains additional information in the form of a customer ID (here shown for only two customers). We can then take a closer look at the distribution in mileage per. picking order list for the two customers. For example, do you typically have to drive longer distances to pick the goods of one customer versus another? And, should you charge that customer extra for this additional cost?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The below figure to the left shows the distribution in mileage for \u00abCustomer 1\u00bb and \u00abCustomer 2\u00bb respectively. One of the things we can interpret from this is that for customer 2, most picking order lists have a noticeably shorter driving distance compared to customer 1. This can also be shown by calculating the average mileage per. picking order list for the two customers (figure to the right).<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-33dc05a elementor-widget elementor-widget-image\" data-id=\"33dc05a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/903\/1*ML3Lv3aXVTcStMwg6EkEHA.jpeg\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d648849 elementor-widget elementor-widget-text-editor\" data-id=\"d648849\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>This type of information can e.g. be used to implement pricing models where the product price to the customer is also based on mileage per order. For customers where the order involves more driving (and thus also more time and higher cost) you can consider invoicing extra compared to orders that involve short driving distances.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a98aec1 elementor-widget elementor-widget-heading\" data-id=\"a98aec1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><h1 id=\"f49a\">Summary:<\/h1>\n<!-- \/wp:heading --><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7d7ecc0 elementor-widget elementor-widget-text-editor\" data-id=\"7d7ecc0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In the end, I hope I have convinced you that graph theory is not just some abstract mathematical concept, but that it actually has many useful and interesting applications! Hopefully, the examples above will be useful for some of you in solving similar problems later, or at least satisfy some of your curiosity when it comes to graph theory and some of its applications.<\/p>\n<!-- \/wp:paragraph -->\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>There are actually an abundance of useful and important applications of graph theory! In this article, I will try to explain briefly what some of these applications are. <\/p>\n","protected":false},"author":651,"featured_media":9446,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[187],"tags":[94,578],"ppma_author":[3401],"class_list":["post-9445","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bigdata-cloud","tag-data-science","tag-graph-theory"],"authors":[{"term_id":3401,"user_id":651,"is_guest":0,"slug":"vegard-flovik","display_name":"Vegard Flovik","avatar_url":"https:\/\/www.experfy.com\/blog\/wp-content\/uploads\/2020\/04\/medium_10d5ff84-76ce-4fa5-80dc-3a0dae50f16d-150x150.jpg","user_url":"http:\/\/www.axbit.com","last_name":"Flovik","first_name":"Vegard","job_title":"","description":"Vegard Flovik, Ph.D., is a Lead Data Scientist. Machine learning and advanced analytics at Axbit AS, a professional ICT systems partner."}],"_links":{"self":[{"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/posts\/9445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/users\/651"}],"replies":[{"embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/comments?post=9445"}],"version-history":[{"count":5,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/posts\/9445\/revisions"}],"predecessor-version":[{"id":34105,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/posts\/9445\/revisions\/34105"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/media\/9446"}],"wp:attachment":[{"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/media?parent=9445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/categories?post=9445"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/tags?post=9445"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=9445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}