Search This Blog

Monday, August 15, 2011

What is the difference between DFA and NFA?

What is the difference between DFA and NFA? 

Answer:

Difference between DFA and NFA

DFA stands for Deterministic Finite Automaton

NFA stands for Non-Deterministic Finite Automaton

•When processing a string in a DFA, there is
always a unique state to go next when each
character is read
•It is because for each state in DFA, there is
exactly one state that corresponds to each
character being read

•In an NFA, several choice (or no choice) may
exist for the next state
•Can move to more than 1 states, or nowhere
•Can move to a state without reading anything

or

Answer:
1. The transition function for nfa ie delta is multi valued where as for dfa it is single valued.
2. Checking membership is easy with dfa where as it is difficult for nfa
3. Construction of nfa is very easy where as for dfa it is difficult
4. Space required for dfa is more where for nfa it is less
5. Backtracking is allowed in dfa,but it is not possible in every casi in nfa.
6. For every input and output we can constuct dfa machine,but it is not possible to construct an nfa machine for every input and output.
7. There is only 1 final state in nfa but there can be more then 1 final state in dfa.

Sunday, August 14, 2011

ASBIDYARTHY: How to download google books

ASBIDYARTHY: How to download google books

How to download google books

How to download google books


Recently I have found a way to download Google books, which I am sharing here, this is for educational purpose only(for google too!!)
After extensive searching I found three ways, two of them no longer works or didn't work for me, first is a software called Google book downloader which is suppose to download books in PDF format, I tried its recent GBD-0.1.0.alpha8 version but it didn't work for me, second I tried a website leechvideo which again didn't work.

Idea which worked successfully is this

First of all you need Firefox, IE doesnt work

Then install add on Greasemonkey , search through firefox add on, you should easily find this, it allows you to run various screepts through your browser, which can modify appearance of websites, after complete installation icon will appear on lower right of your browser

Now you will need a script called [ Userscript ] Google Book Downloader, after installing this script whenever you will open the google books site, you will find a download button on upper right hand corner, click on it, it will list all the availabe pages of the books

Then one last plugin called FlashGot, this will download all the pages you have selected, just rignt click after selecting the pages and then click FlashGot Selected, or click FlashGot all for all pages


TRAPS IN this method: there are few points where you might get trapped,

dont try to install userscript before installing greasymonkey

dont search for books from www.google.com, because links generated is not compatible with this method, rather go direcly to http://books.google.com

In flashGot options select "browser built in", option rather than w-get

Downloaded pages are saved without extension (i.e, *.jpg, *.png), google uses either jpg or png format randomly for different pages in the same book, so you will have to apply correct extension by trial and error method(tiring thing) before you will be able to open the page in windows, If you are using UBUNTU, all pages can be opened without extension because Ubuntu recongnises format without using extension as windows does

converting to PDF with acrobat pro will require the correct extension behind name of every picture file generated even if you are using Ubuntu, but this is easier with Ubuntu as file property will tell you the correct format

and last thing you can download only available pages , so search for only full view books

All the best, dont forget to comment about your experience, your suggestion are welcome

Monday, August 08, 2011

Increase your internet speed with Namebench

NameBench is a program that searches for the fastest DNS in your area. After the program is finished searching and comparing between DNS it will give you the results including the fastest and nearest DNS in your area. After that all you have to do is edit your connection settings to use the fastest DNS available. NameBench is available for Windows and Mac systems, but most importantly it is Linux compatible.
Prepare your system

Install following package

sudo apt-get install python-tk

Now you need to download .tgz file from here

Now extract the file using the following command

tar xzvf namebench-1.1.tgz

Now you have namebench-1.1 directory.If you double click on this you have two options if you want to run immediately you can do by double clicking on namebench.py file.

If you want to install permanently using the following command

sudo python setup.py install

Once it opens you should see similar to the following screen here click on Start Benchmark



The results are compared to Google’s DNS and the system will compare against your current DNS settings. The fastest DNS will be listed at the top.

How to increase internet speed in ubuntu

Internet speeds in Ubuntu can be increased. Simply follow the steps.

Open a Terminal via Applications->Accessories->Terminal and type the following

sudo vim /etc/sysctl.conf (press i for edit mode)

Then Paste the Following at the end of the file:

## increase TCP max buffer size setable using setsockopt()
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
## increase Linux autotuning TCP buffer limits
## min, default, and max number of bytes to use
## set max to at least 4MB, or higher if you use very high BDP paths
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
## don't cache ssthresh from previous connection
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1
## recommended to increase this for 1000 BT or higher
net.core.netdev_max_backlog = 2500
## for 10 GigE, use this, uncomment below
## net.core.netdev_max_backlog = 30000
## Turn off timestamps if you're on a gigabit or very busy network
## Having it off is one less thing the IP stack needs to work on
## net.ipv4.tcp_timestamps = 0
## disable tcp selective acknowledgements.
net.ipv4.tcp_sack = 0
##enable window scaling
net.ipv4.tcp_window_scaling = 1



Then type the follwing to exit and save what you have just done. Press ESC to quit the edit mode and type the following.

:wq

Then type the following to to apply the settings.

sudo sysctl -p

You can disable all these settings by removing these lines you added via:

sudo gedit /etc/sysctl.conf