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/

Monday, November 14, 2011

802.XX Standards

802.XX standards came into existence by IEEE. Various IEEE standards for the same are:-


Ø 802.1 is an internetworking standard for compatibility of different LANs and MANs across protocols.

Ø 802.2 Logical link control (LLC) is the upper sublayer of the data link layer which is non-architecture-specific, that is remains the same for all IEEE-defined LANs.

Ø Ethernet LAN (802.3),

Ø Token ring LAN (802.4),


Ø Token bus LAN (802.5).

Ø 802.6 is distributed queue dual bus (DQDB) designed to be used in MANs.

Interesting, isn't it ?

Sunday, September 25, 2011

Connection Oriented Versus Connection less

There are 3 terms.
1. Circuit Switched N/w
2. Datagram N/w
3. Virtual Circuit N/w.

All the 3 types of network can be established by using same infrastructure. but in each case, every node behaves differently. Lets see what each type of network does.

1. Circuit Switched N/w :
    Infrastructure is considered to be consisting of many physical links which are connected using switches. Each link is divided into channels.
    So, the link is like a road on high way. And the channels are lane on the road. this analogy is sufficient to understand the meaning of channel and its significance also.
   
   In Circuit Switched N/w before the call is established or before the data transmission, intermediate route is determined and is reserved for the same purpose. So, link x's channel y is reserved for a particular duration of time for a specific data transfer. Before the time ends even if channel is idle, it is considered as busy and no one else can access it.

   This gives the guarantee regarding QoS of the data. As far as reliability is concerned, it depends on whether the intermediate links are active during entire session. Even if one channel fails or one link fails the entire set up fails and need to be closed. And here the links are truly dedicated to particular connection.

    Hence it is considered as fully dedicated. So the major disadvantage of the system is that resource utilization is poor, as can be seen from the idea of protocol itself. Connection establishment and teardown both requires certain amount of time.

2. Datagram N/w:
    As the above mentioned protocol is very very poor in terms of resource utilization, another better technique is decided i.e. Datagram n/w. In this technique, the entire n/w is considered to be  same as above, set of physical links and nodes. Each node has its routing table. Now, when the request is sent, it can go from anywhere, it just has to reach the desitnation. Each node can see where to route the packet and can forward them accordingly.

   The end user is expected to have a high buffer size so that incoming packets if reached in any order can be assembled. Hence, generally a minimum and maximum allowed time for the packet is always decided so that it goes to destination without buffer overflow.

   The major advantage of the system is that, Resource utilization is very high. And the reliability is maximum as the packet will reach destinaiton as long as there is at least one path possible. The major disadvantage of the system is that QoS cannot be guaranteed. Infact it may vary over a period of time. So, for initial 3 minutes you may get very clear sound quality and after that the sound is not even audible. So, for certain important data transmission, where QoS is very important , it cannot be used much. No time is required for Connection establishment and teardown.


3. Virtual Circuit N/w:
    Virtual Circuit is the combination of above 2 in one. So, like the Circuit switched a virtual circuit is set up but the same circuit can be shared among many types of data transmission. So, all the pkts going from source to destination goes through same set of nodes. But different set of packets may go through same set of nodes if desired. Also if certain link fails then packet stram can be forwarded to another node and the node can be changed accordingly.

    This makes it possible to give very high Reliability and optimum uses of resources is possible. QoS, if desired can be provided for the data transmission. Connection establishment and teardown both requires certain amount of time.


If you want to share something more about the same, please do add more to it. !!!

Friday, September 23, 2011

Variations of Turing Machine

Turing Machine represents a model of computational machine with equivalent computational power with respect to any computer.

Computational power of a device is class of problems which can be solved by it.

It was realized later that a Finite Automata can recognize basic patterns in the given input called as Regular Expression.

A FA with one extra stack has more computational power than a FA with no stack. Also called as PDA.
A PDA with one more extra stack has even more computational power than a PDA can solve more general class of problems. also called as TM.

Interestingly, TM has most computational power and adding any thing else to it only increases the speed which with the calculation can be done and not the computational power.
Hence, various Automata have been stated with minor variations to TM which are even equally powerful.

1. Turing machine with Stay Option:
2. Turing machine with multiple tracks.
3. TM with semi infinite tape.
4. Offline Turing Machine.
5. Multi dimensional TM
6. Non Deterministic TM
7. Universal TM


But there are various ways to reduce its power for example.

1. A pushdown automaton can be regarded as a Non Deterministic TM with a tape that is restricted to being used as a stack.
2. Also a finite automata is a turing machine where only a finite part of the tape can be used as work space.
3. Another Interesting automata is Linearly bounded Automata in which you strict the tape length to be exactly same as input length.

It is still not known whether Deterministic and Non deterministic LBA's are equivalent or not..
But LBA are less powerful than TM but more powerful than a PDA.

Tuesday, September 13, 2011

Concurrency Control

Maintaining synchronization among concurrently executing processes is a challenging task. Hence a general idea is use LOCK constructs on data item to maintain consistency and access control to them. The idea is that at a time if one process or thread is updating some variable then no other thread or process can either write or even read the same variable. Various Locking protocols are :--->
1. Two phase Locking
  1.1 Strict Two phase Locking
  1.2 Rigorous Two phase Locking
2. Graph Protocol
3. Time Stamp Protocol
4. Validation based protocol



One of very strange thing was if there are more than one copies of a variable present in distributed manner, then how to do updation ? is it necessary to update all the copies ?? sometimes it is not possible and not even efficient to update them all. 
There is one protocol developed for the same problem which i really liked very much. Its m isto n protocol (dont' remember the exact name).

According to this protocol, when you are trying to read some value whose values are distributed among different machines, to avoid inconsistency and to maintain efficiency, update atleast half of the values. Similarly, while reading read from atleast half the values.