You will learn how to create the HTML structure, CSS style sheet, and JavaScript code. *Toggle able Light or Bulb On Off Animation Project.*

In this project, you will learn how to create a toggle-able light-bulb animation. The animation will be created in HTML, CSS, and JavaScript.

A toggle-able lightbulb on-off animation is a light bulb that can be turned on and off by clicking it, or by clicking on it. It can be done with HTML, CSS, and JavaScript. There are two different ways to do this: the first is to use a button and the second is to use a div. The first way is to use a button with an image on it and the second is to use a div with an image. The first way would be easier because the button can have a click event that sends the script to turn on or off the light bulb. The second way would be harder because there is no click event on the div so you would need to add one yourself.

*Toggle able Light – Bulb On Off Animation Project.*

*Toggle able Light – Bulb On Off Animation Project.*

**A Handout in Graph Theory 11: Bellman Ford**

An Algorithm for Finding Shortest Paths in Bellman-Ford Graphs. This algorithm takes a node as a source and finds the shortest path to all nodes from there. We learned Breadth First Search to do this at the very beginning. But since BFS does not work on weighted graphs, we next learned Dijkstra’s algorithm. Now let’s learn Bellman Ford because none of the previous algorithms work on graphs with edges of negative weights.

When we were studying Dijkstra we learned about relaxation. If you don’t remember or haven’t learned Dixtra, we do a little welding first. If you remember you can skip the next part and go directly here.

Edge Relaxation:

Suppose a graph has the distance/cost of each node from the source d[]

in the array. For example, d[3] means that a total distance of d[3] has to be crossed to reach node number 3 after crossing different edges from the source. If the distance is not known, then I will leave a value of infinity, that is, a very large value. And cost[u][v] contains u−v

Edge’s cost.

Suppose you go around different places and go from Farmgate to TSC in 10 minutes and again from Farmgate to Curzon Hall in 25 minutes. So with farmgate as source we can say:

## Before Download

## You must Join our Facebook Group and Subscribe YouTube Channel

**All Links in Below:**

d[TSC] = 10, d[Curjon Hall] = 25

Now you can go to Curzon in 7 minutes from TSC.

cost[tsc][cursion is] = 7

So instead of 25 minutes you can go to Karj Nahal in just 10 + 7 = 17 minutes. As you have seen:

d[tsc]+cost[tsc][cost] < d[cost is]

So you can go to Curzon Hall through this new road and make d[Curzon Hall] = d[TSC] + cost[TSC][Curzon Hall]!!

That’s what the picture above says. We go from u to v if d[u]+cost[u][v] < d[v]. And update d[v] to make d[v]=d[u]+cost[u][v]. In the future, if I can go to Karjanhal by another road in less time, then I will compare and update that road like this. It goes something like this:

This is edge relaxation. Now we are ready to learn Bellman Ford.

Bellman Ford

In the following graph we want to find the shortest path from 1 to each node:

Initially d[1]=0

Reason 1 is the source. We put infinity in the rest because we don’t yet know the cost of the shortest path.

You’ve learned how to edge relax. Now the task is to relax all the edges at once, in any order. To ‘relax the graph’ once means to relax all the edges of the graph at once. I want to relax in the following order,

*Toggle able Light – Bulb On Off Animation Project.*

*Toggle able Light – Bulb On Off Animation Project.*

You can get the edges in any other order if you want. Now consider what we get in the d[] array once we relax the edges? We will get the cost of the shortest path from the source to another node using at most 1 edge. Update the values of d[] after relaxing in the above image. After doing this the image should look like below:

I could not update the cost of some nodes during edge relaxation because d[u]+cost[u][v] < d[v] did not satisfy the condition. After updating the rest of the edges d[]

I got the value of the array as shown in the above image. Now we know the shortest path from node 1 to all nodes using at most one edge!

Now relax once more to find out the cost of the shortest path to all nodes using maximum 2 edges! It can be done again in any order, but it is convenient when writing code to do it every time in the order it was first done.

## Before Download

## You must Join our Facebook Group and Subscribe YouTube Channel

**All Links in Below:**

Note that the shortest path from 1 to 6 has 3 edges (1->3, 3->4, 4->6) and the path length is 2+1+5=8. After only relaxing 2 times, we now have 8 in d[6], whereas we are now supposed to get the cost of the shortest path using at most 2 edges. It depends on the order in which you have edge relaxed. That’s why even though the shortest path to 5 is 10, d[5] still doesn’t get 10. If you ‘graph relax’ X times, you will definitely get the shortest path to each source node using at most X edges. You may or may not get the shortest path to each node using more than X edges after graph relaxation X times, depending on the order of the edges.

Now relax for the 3rd time:

This time only node number 5 will be updated.

Then every time we update, d[]

There will be no change in the array, we have found the shortest path from 1 to every node.

Now naturally the question will come that how many times to relax? If the graph has n nodes then at most n−1 to go from one node to another node

The edge must be used. That means a node can be updated at most n−1 times. So the relaxing loop must also run n−1

times However, as we have seen in the above graph, no node can be updated after 3 times, so there is no need to relax again.

Now run the Bellman-Ford algorithm on the following 3-node graph only, i.e. relax the entire graph as long as no node can be updated:

In a 3-node graph, the shortest path from the source to any node should take no more than 2 edges, and if you try to relax for the 3rd time, no node should be updated. But updating this graph:

This is because 1−>2−>3−>1 cycle total weight is negative (3+2–10=−5). So the shorter you cycle the shorter the shortest path. So if there is a negative cycle and there is a path from the source to that negative cycle then the shortest path to the source is undefined. If after relaxing the graph n−1 times we see that n

Even if the cost of a node is updated for the th time, it should be understood that we are in a negative cycle, it is not possible to find the shortest path.

Our sudocode would then look like this:

Print the path:

Paths can be printed here in the same way as paths are printed in BFS or Dxtra. previous[]

Take an array of names. previous[v]=u means at vth node you are from u. Initially the array will contain infinity. Make previous[v]=u while relaxing the u−>v edge. Now you are previous

You can extract the path of any node from the source by looking at the array.

Complexity:

At most n−1

Each time each edge has to be relaxed, the time complexity is O(n∗e).

.

Some issues to think about:

You are given a graph that tells you the maximum x on the shortest path

There may be an edge. Now how to find the shortest path? (UVA 11280)

How to find the negative cycle part of any node in a graph? (Hints: Strongly Connected Components + Bellman Ford)

Some related problems:

UVA 558(Easy)

LOJ 1108

UVA 10449

Happy Coding!

## Before Download

## You must Join our Facebook Group and Subscribe YouTube Channel

**All Links in Below:**

**Join Our FreeWebsiteCreate Facebook Group to get an instant update for projects, templates, design resources, and solutions.**

**Join Our YouTube Channel & Subscribe with Bell Icon for New Video:**

## Join Our Official Facebook Page For the Latest updates All Code Projects are Free:

## Visit our service page to get **premium services.**

Free Website Create – HTML CSS, PHP, JavaScript Programming Projects For Free

**Follow Us**

**Thank You,**

## Before Download

## You must Join our Facebook Group and Subscribe YouTube Channel

FreeWebsiteCreate.net tries to provide HTML, CSS, SCSS, JavaScript, React, Android Studio, Java, PHP, Laravel, Python, Django, C#(C Sharp), and ASP.net-related projects 100% free. We try to make learning easier. Free Website Create always tries to give free projects to those who are new learners. Free projects and source code will help to learn easily. They can save time and learn more. In this post, we share a free portfolio project website code with HTML and CSS. This free code portfolio contains a single landing page with a responsive design. In this post, we get a free best carpenter and craftsman service website designed by FreeWebsiteCreate with HTML, CSS, Bootstrap, and JavaScript.