Friday, December 9, 2011

Graph Traversal

Graph in the simplest terms is a representation of some real world fact in terms of nodes and edges. It consists of a collection of nodes and a set of edges connecting them. In a general graph, there is no restriction on  type of nodes that can be connected by an edge.


Tree on the other hand are special case of graph where there exists exactly one path between each pair of nodes. A tree is just connected. Adding even a single edge results in a cycle. So a tree with n nodes has n-1 edges.

Traversal
When graph represent some real world entity and we want to examine all the nodes which are connected to each other then its called traversing a graph. Since a general graph can contain a cycle, hence algorithms do exists to avoid such issues. In this blog i will be covering about most recognized graph traversal algorithms. Many of these algorithms are also related to tree traversal. We will be discussing about following graph traversal algorithms
1. Breadth First Search (BFS)
2. Depth First Search (DFS)
3. Prim' Algorithm
4. Kruskal's Algorithm
5. Dijkstra's Algorithm (Single Source Shortest Path )
6. Bellman Ford Algorithm ( Single Source Shortest Path )
7. Floyd Warshall Algorithm (All Pair Shortest Path )

Some of coomon terminology used are
SSSP i.e. Single source shortest path in which we try to find optimum traversal strategy so that all the nodes are at a shortest distance from a particular node.
All Pair is the generalized form of SSSP algorithm. In this, we try to find shortest path between all pair of vertices. i.e. overall distance is minimum.
----------------------------------------------------------------------------------------------
1. Breath First Search


2. Depth First Search


3. Prim's Algorithm
It finds spanning tree in only one of connected graph.

4. Kruskal's Algorithm
If the graph consist of multiple disjoint connected graph then it finds minimum spanning tree in each of graph at once.

5. Dijkstra's Algorithm
SSSP where each node has non negative weight

6. Bellman Ford Algorithm
SSSP where nodes can have negative weight but any cycle with negative value should not exist.
It is interesting to know that a similar problem i.e. graph where negative weight cycle exists, and shortest path finding such that no edge appears twice is NP complete problem

7. Floyd Warshall's Algorithm

XML parsing made easy

Hi All,
   If you are a programmer, then XML is not a new term for you.

Extensible Markup Language : Simple and universal data representation format. They can be used to represent any structure or any nested and complicated data structure.
  While using on your system typically you transmit your data from one system to another using either a file or some object. As file do not store structure and object are programming language dependent. So, they both have limitation.
   To overcome these issues, XML is a better option. XML, like a file stores data in the form of human readable files and also preserves the structure. But a question that is obvious is how to convert a data in program into XML file and vice versa. This typical problem is Serialization and deserialization.

  Writing XML using Simple files is fine but deserialization will become difficult. Also both client and server must share their representation which is difficult. Even more challenging is data validation. As the structure becomes complex you will tend to commit sucide..


But Wait.
There is a better and clean way to express yourself. :)
There is a way which allows you to express your XML to program bridge using a representation. Yes, we are talking about Simple XML parser.

http://simple.sourceforge.net/


More information about this later.. :)

Thursday, December 8, 2011

First Things first

So, its been a long time since my last post.

Even i'm bored of my boring life..
So, the best way to keep yourself interested is to keep on learning new stuff.
Starts from today :)

From now on, i will try to learn atleast one new thing and will try to post it here. :)

-------------------------------------------------------------------------------------------------------------
Starts with JRebel Today ..


Have you ever spent hours and hours of your time developing some web application and trying to fix a bug or trying to improve it..

Have you ever encountered a moment where you just sit in front of computer and wait for next 5 minutes starring at it and wishing if this time its loaded faster than last time ..

If not then this post is probably not for you..
If you already have the same pain then welcome to the world of JRebel.

JRebel Automatically reloads the class file simply by pastiing the jar file and replacing the older value.
Read this interesting article.
http://zeroturnaround.com/blog/reloading-objects-classes-classloaders/

This explains what is so great task that JRebel does.




http://zeroturnaround.com/jrebel/