Merge branch 'master' of gitlab.com:shockrahwow/csnotes
This commit is contained in:
commit
0e0e887c10
1
370/.gitignore
vendored
1
370/.gitignore
vendored
@ -1 +1,2 @@
|
||||
*swp
|
||||
*dat
|
||||
|
27
370/notes/a-star.md
Normal file
27
370/notes/a-star.md
Normal file
@ -0,0 +1,27 @@
|
||||
# A\* Pathfinding
|
||||
|
||||
There are 3 main values usedd in reference to A\*:
|
||||
|
||||
```
|
||||
f = how promisiing a new location is
|
||||
g = distance from origin
|
||||
h = estimate distance to goal
|
||||
f = g + h
|
||||
```
|
||||
|
||||
For a grid space our `h` is calculated by two straight shots to the goal from the current location(ignore barriers).
|
||||
The grid space `g` value is basiccally the number of steps we've taken from the origin.
|
||||
We maintain a list of potential nodes only, so if one of the seeking nodes gets us stuck we can freely remove that, because it succs.
|
||||
|
||||
# Time & Space Commplexities
|
||||
|
||||
## Best-First Search
|
||||
|
||||
Time: O(VlogV + E)
|
||||
|
||||
## Dijkstra's
|
||||
|
||||
O(V)
|
||||
|
||||
## A\*
|
||||
O(V^2 = E)
|
@ -1,32 +0,0 @@
|
||||
# Syntax tree in disguise
|
||||
class Node:
|
||||
def __init__(self, symbol=None, leaf=False, children={}):
|
||||
# root node doesn't need any actual data
|
||||
self.symbol = None
|
||||
self.leaf = leaf
|
||||
# {key=char : value=Node}
|
||||
self.children = children
|
||||
|
||||
class Trie:
|
||||
def __init__(self):
|
||||
# root should contain every letter so that we can pick our thing
|
||||
root = Node()
|
||||
|
||||
#wrapper func
|
||||
def traverse(self, func, phrase, _node):
|
||||
# wew lad
|
||||
def func(_phrase, _node):
|
||||
|
||||
return func(phrase)
|
||||
|
||||
@traverse
|
||||
def insert(self, phrase, node):
|
||||
pass
|
||||
|
||||
@traverse
|
||||
def remove(self, phrase, node):
|
||||
pass
|
||||
|
||||
@traverse
|
||||
def checkPhrase(self, phrase):
|
||||
pass
|
Loading…
Reference in New Issue
Block a user