<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>tree search algorithms Archives - Pharmacelera | Pushing the limits of computational chemistry</title>
	<atom:link href="https://pharmacelera.com/blog/tag/tree-search-algorithms/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Thu, 17 Mar 2022 12:12:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://pharmacelera.com/wp-content/uploads/2022/04/cropped-Linkedin-avatar-32x32.png</url>
	<title>tree search algorithms Archives - Pharmacelera | Pushing the limits of computational chemistry</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Artificial Intelligence: tree search algorithms</title>
		<link>https://pharmacelera.com/blog/science/artificial-intelligence-tree-search-algorithms/</link>
		
		<dc:creator><![CDATA[Fernando Martín]]></dc:creator>
		<pubDate>Wed, 16 Mar 2022 09:33:52 +0000</pubDate>
				<category><![CDATA[Science]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[tree search algorithms]]></category>
		<guid isPermaLink="false">https://pharmacelera.com/?p=10931</guid>

					<description><![CDATA[<p>As we explained in our previous post, Artificial Intelligence (AI) is more than Machine Learning (ML). Artificial Intelligence (AI) techniques include algorithms [&#8230;]</p>
<p>The post <a href="https://pharmacelera.com/blog/science/artificial-intelligence-tree-search-algorithms/">Artificial Intelligence: tree search algorithms</a> appeared first on <a href="https://pharmacelera.com">Pharmacelera | Pushing the limits of computational chemistry</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="10931" class="elementor elementor-10931" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-d6cdead elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="d6cdead" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-938a9d4" data-id="938a9d4" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-67a4084 elementor-widget elementor-widget-text-editor" data-id="67a4084" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>As we explained in <a href="https://pharmacelera.com/science/artificial-intelligence-is-not-machine-learning/">our previous post</a>, Artificial Intelligence (AI) is more than Machine Learning (ML). Artificial Intelligence (AI) techniques include algorithms for finding optimal or pseudo-optimal solutions in complex problems, for example.</p><p>Several search problems can be described as a tree of options, in which each node of the tree is a partial or final solution to the problem and the branch below the node (if any), describes following options given that partial solution.</p><p>For instance, imagine we want to build a molecule by merging 4 building blocks from a pool of 1,000 blocks. For the sake of simplicity, let’s assume that building blocks can be combined in any form but two building blocks can only be combined in a single anchored point. The tree that describes the search space will have a root with an empty molecule (no building blocks) and a first level of nodes with width 1,000 (we can pick any building block as a starting point). A second level (depth) would consist of 1,000 nodes below each of the nodes in the first level: we can combine one building block with any of the 1,000 building blocks. And the same would happen for nodes in the 3<sup>rd</sup> and 4<sup>th</sup> levels (depths). Although this search tree has 4 depth levels given that we have described a constraint problem (4 building blocks), the search space is still enormous: 1,000^4 = 10^12.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-1b202dc elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="1b202dc" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-10f2c1e" data-id="10f2c1e" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-b3e20b7 elementor-widget elementor-widget-image" data-id="b3e20b7" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img fetchpriority="high" decoding="async" width="1024" height="600" src="https://pharmacelera.com/wp-content/uploads/2022/03/Figure1-1024x600.png" class="attachment-large size-large wp-image-10933" alt="tree_algorithms" srcset="https://pharmacelera.com/wp-content/uploads/2022/03/Figure1-1024x600.png 1024w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure1-300x176.png 300w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure1-768x450.png 768w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure1-1536x899.png 1536w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure1-2048x1199.png 2048w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure1-920x539.png 920w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure1-230x135.png 230w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure1-350x205.png 350w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure1-480x281.png 480w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-8b3eef7 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8b3eef7" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c13a3e4" data-id="c13a3e4" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-42acfa1 elementor-widget elementor-widget-text-editor" data-id="42acfa1" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>As another example, the tree search space for a next chess game move is infinite. The root node of the tree describes the current situation of the pieces in the chess, each node below it describes a potential move of any of the existing pieces and so on for lower levels (depths). Each path from the root to any given node describes a series of potential moves (one white, one black). Since this is an unconstrained problem, search algorithms will limit the search space to an extent (e.g. a number of depths or next piece moves).</p><p>Note the importance of computing power to explore a large search space and to find better solutions in both cases in a reasonable amount of time.</p><p>Several algorithms exist for searching these tree spaces. These algorithms use a scoring function for each solution or partial solution to the problem (each tree node). In the case of molecules, it could be a Tanimoto-like score compared to a reference molecule. In the case of the chess game, it could be the difference between the number of existing pieces of the player taking the next move and the number of existing pieces of the opponent (evidently, this scoring is super simple, the one we used when we were kids).</p><p>Breadth-first search (BFS) algorithms explore first all the nodes of the current depth before exploring the nodes one depth lower. Depth-first search (DFS) algorithms, on the other hand, explore a given branch as deep as possible before backtracking up and following other branches. The following figure illustrates the search order to the molecular building blocks problem using BFS (in blue) and DFS (in green).</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-d601b63 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="d601b63" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a890904" data-id="a890904" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-261af2b elementor-widget elementor-widget-image" data-id="261af2b" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="1024" height="343" src="https://pharmacelera.com/wp-content/uploads/2022/03/Figure2-1024x343.png" class="attachment-large size-large wp-image-10934" alt="Breadth-first search (BFS) algorithms" srcset="https://pharmacelera.com/wp-content/uploads/2022/03/Figure2-1024x343.png 1024w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure2-300x101.png 300w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure2-768x258.png 768w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure2-1536x515.png 1536w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure2-2048x687.png 2048w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure2-920x309.png 920w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure2-230x77.png 230w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure2-350x117.png 350w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure2-480x161.png 480w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-c3684ba elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c3684ba" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b2f876d" data-id="b2f876d" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4875aa7 elementor-widget elementor-widget-text-editor" data-id="4875aa7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>BFS algorithms require more memory than DFS algorithms, as the search space is explored in parallel and all options need to be kept in memory. DFS algorithms, on the other hand, are greedy algorithms that can get lost in a non-optimal branch if the search space is too big or infinite. Some DFS modifications tend to alleviate this problem by iteratively revisiting some of the top partial solutions and backtrack to other branches faster.</p><p>Several variants have been proposed to improve the time and memory requirements of these search algorithms. These variants mainly concentrate on two different aspects:</p><ul><li>Branch prioritization: by measuring or predicting that specific branches can lead to better solutions, the algorithm can explore these branches first and reach an optimal or pseudo-optimal solution faster.</li><li>Branch pruning: by measuring or predicting that specific branches lead to poor solutions, the algorithm can prune those branches and skip exploring them.</li></ul><p>A* algorithms, for example, are best-first search algorithms. The idea of A* is to measure what is the score of a given internal node of the search tree and explore the subbranch that can potentially maximize the scoring function first. At each internal node, the algorithm computes the scoring function of that partial solution and it predicts or measures how far all the subbranches are to the optimal or pseudo-optimal solution.</p><p>For example, in the case of the molecular subblocks, the algorithm can prioritize a branch that starts at depth 2 with a Tanimoto value of 0.5 of that partial solution than a branch that starts at depth 3 with a Tanimoto value of 0.1. This is so because it is easier to find a better solution in the former, as depicted in the following figure.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-0aa09b0 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="0aa09b0" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4916530" data-id="4916530" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-f9a2897 elementor-widget elementor-widget-image" data-id="f9a2897" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="1024" height="630" src="https://pharmacelera.com/wp-content/uploads/2022/03/Figure3-1024x630.png" class="attachment-large size-large wp-image-10935" alt="A* algorithms" srcset="https://pharmacelera.com/wp-content/uploads/2022/03/Figure3-1024x630.png 1024w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure3-300x185.png 300w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure3-768x472.png 768w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure3-1536x945.png 1536w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure3-2048x1260.png 2048w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure3-920x566.png 920w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure3-230x141.png 230w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure3-350x215.png 350w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure3-480x295.png 480w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-a21b854 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a21b854" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ce312a9" data-id="ce312a9" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-5ef2366 elementor-widget elementor-widget-text-editor" data-id="5ef2366" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Branch and bound (BB or B&amp;B) are also algorithms that prioritize some branches over others, but they also prune the search space by skipping specific branches that are computed to lead to suboptimal solutions. Such algorithms keep bounds or ranges of scoring values and they compute, at each internal node, if particular subbranches cannot lead to solutions that improve the best one found so far.</p><p>For simplicity, let’s assume that adding a building block can improve the current Tanimoto value of a partial solution in a range between 0 and 0.2. If the algorithm has already found a complete molecule of 4 building blocks that has a Tanimoto value of 0.95, it will not explore a subbranch at depth 2 if the Tanimoto value of that partial solution is 0.1. That partial solution can only be complemented by 2 building blocks and the best expected Tanimoto of any solution in that branch is 0.5 (the current 0.1 plus the maximum potential of +0.2 for each of the 2 final building blocks), as shown in the following figure.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-65b4d96 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="65b4d96" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d2e7287" data-id="d2e7287" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1a62ad5 elementor-widget elementor-widget-image" data-id="1a62ad5" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="580" src="https://pharmacelera.com/wp-content/uploads/2022/03/Figure4-1024x580.png" class="attachment-large size-large wp-image-10936" alt="Branch and bound (BB or B&amp;B)" srcset="https://pharmacelera.com/wp-content/uploads/2022/03/Figure4-1024x580.png 1024w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure4-300x170.png 300w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure4-768x435.png 768w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure4-1536x870.png 1536w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure4-2048x1160.png 2048w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure4-920x521.png 920w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure4-230x130.png 230w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure4-350x198.png 350w, https://pharmacelera.com/wp-content/uploads/2022/03/Figure4-480x272.png 480w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-387d559 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="387d559" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d50de30" data-id="d50de30" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-c342c05 elementor-widget elementor-widget-text-editor" data-id="c342c05" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>The field of search algorithms, a fascinating component of Artificial Intelligence, is quite big and it has been widely studied. The basic algorithms described in this post date back from the 60s, 70s and 80s, with more modern variations in more recent years. I just wanted to provide a glimpse of some of the basic strategies. If interested, there are several books and papers around these topics.</p>
<p>Stay tuned for future post on other Artificial Intelligence posts. &nbsp;</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://pharmacelera.com/blog/science/artificial-intelligence-tree-search-algorithms/">Artificial Intelligence: tree search algorithms</a> appeared first on <a href="https://pharmacelera.com">Pharmacelera | Pushing the limits of computational chemistry</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
