Wednesday, 11 April 2018
Saturday, 6 May 2017
EF Code 12 Rules for RDBMS
EF
Code 12 Rules for RDBMS
Edger Frank “Ted ” code(august
1923-18 April 2003) was an English computer scientist who, while working for
IBM, invented the relational model for database management, the theoretical
basis for relational database Code proposed thirteen rules, numbered 0 to 12.
According
to him if a database meets these rules, it can be called relational database
management system. The system must qualify
as relational as a database and as a management system. For a system to qualify
as a relational database management system, that system must use its relational
facilities to manage database.
The other 12 rules derive this
rule.
All information (including
metadata) is stored to be represented as stored data in cells of table. The
rows and columns have to be strictly unordered Each unique piece of data (atomic
value) should be accessible by Table
Name + Primary key (row) + Attribute (column)NULL has several meanings,
it can mean missing data, not applicable or no value. It should be handled
consistently. Primary key must not be NULL.
Expression on NULL must give NULL. Database dictionary must have
description of Database. Catalogue
to be governed by same rule as rest of the database. The same query language to
be used on catalogue as on applicable database. One well defined language must
be there to provide all manners of access to data Eg SQL
All view that are theoretically
updatable should be updatable by the system View is a virtual table There must
be Insert, Delete, Update operations at each level of relations. Set operation
like Union, Intersection and minus should also be supported. The physical
storage of data should not matter to the system. If say some file supporting
table were renamed or moved from one disk to another, it’s should not affect
the application. If there is change in the logical structure (table structure)
of the database the user view of data should not change. Say, if a table is
split into two tables, a new view should give result as the join of the two
tables. This rule is most difficult to satisfy. The database should be able to
conforce its own integrity rather than using other programs. Key and check
constraints. Trigger etc should be stored in data Dictionary. This also make RDBMS impendent of front end. A
database should work property regardless of its distribution across a network.
This lays foundation of distributed database. If low level Access is allowed to
a system it should not be able to subvert or by pass integrity rule to change
data. This can be achieved by some sort of looking or encryption
Monday, 13 March 2017
namespace c++ explanation with examples
By ittaleem4u 01:48
C++ Standard Library, Capacity Modifiers, Element access, Member functions, Member types, Non-member functions, Operations, std::list, Template parameters No comments
C++ Standard Library:
In the C++ programming language, the C++ Standard
Library is a collection of classes and functions, which are written in the core
language and part of the C++ ISO Standard itself.The C++ Standard Library provides several generic containers, functions to
utilize and manipulate these containers, function objects, generic strings and
streams (including interactive and file I/O), support for some language
features, and functions for everyday tasks such as finding the square root
of a number. The C++ Standard Library also incorporates 18 headers of the ISO C90
C standard library ending with ".h", but their use is deprecated. No
other headers in the C++ Standard Library end in ".h". Features of
the C++ Standard Library are declared within the std namespace.
The C++ Standard Library is based upon conventions
introduced by the Standard Template Library (STL), and has been influenced by
research in generic programming and developers of the STL such as Alexander
Stepanov and Meng Lee. Although the C++ Standard Library and the STL
share many features, neither is a strict superset of the other.
A noteworthy feature of the C++ Standard Library is that
it not only specifies the syntax and semantics of generic algorithms, but also
places requirements on their performance. These performance requirements often
correspond to a well-known algorithm, which is expected but not required to be
used. In most cases this requires linear time O(n) or linearithmic time
O(n log n), but in some cases higher bounds are
allowed, such as quasilinear time O(n log2 n) for stable sort (to allow in-place merge sort). Previously sorting was only required to take O(n log n) on average, allowing the use of quicksort, which is fast in practice but has poor worst-case performance, but introsort was introduced to allow both fast average performance and optimal worst-case complexity, and as of C++11, sorting is guaranteed to be at worst linearithmic. In other cases requirements remain laxer, such as selection, which is only required to be linear on average (as in quick select), not requiring worst-case linear as in introselect.
allowed, such as quasilinear time O(n log2 n) for stable sort (to allow in-place merge sort). Previously sorting was only required to take O(n log n) on average, allowing the use of quicksort, which is fast in practice but has poor worst-case performance, but introsort was introduced to allow both fast average performance and optimal worst-case complexity, and as of C++11, sorting is guaranteed to be at worst linearithmic. In other cases requirements remain laxer, such as selection, which is only required to be linear on average (as in quick select), not requiring worst-case linear as in introselect.
The C++ Standard Library underwent ISO standardization as
part of the C++ ISO Standardization effort, and is undergoing further work
regarding standardization of expanded functionality.
std::list:
std::list is a
container that supports constant time insertion and removal of elements from
anywhere in the container. Fast random access is not supported. It is usually
implemented as a doubly-linked list. Compared to std::forward_list this container provides
bidirectional iteration capability while being less space efficient.
Addition, removal
and moving the elements within the list or across several lists does not
invalidate the iterators or references. An iterator is invalidated only when
the corresponding element is deleted.
std::list meets the requirements of Container, Al locator Aware Container, Sequence Container and Reversible Container.
Template parameters
-
|
The type of the
elements.
|
||||
Allocator
|
-
|
An allocator
that is used to acquire/release memory and to construct/destroy the elements
in that memory. The type must meet the requirements of Allocator. The behavior is undefined if Allocator::value_type
is not the same as T.
|
Member types
Member type
|
Definition
|
|||
value_type
|
T
|
|||
allocator_type
|
Allocator
|
|||
size_type
|
Unsigned
integer type (usually std::size_t)
|
|||
difference_type
|
Signed integer
type (usually std::ptrdiff_t)
|
|||
reference
|
|
|||
const_reference
|
|
|||
pointer
|
|
|||
const_pointer
|
|
|||
iterator
|
BidirectionalIterator
|
|||
const_iterator
|
Constant
bidirectional iterator
|
|||
reverse_iterator
|
std::reverse_iterator<iterator>
|
|||
const_reverse_iterator
|
std::reverse_iterator<const_iterator>
|
Member functions
(constructor)
|
constructs the list
(public member function) |
(destructor)
|
destructs the list
(public member function) |
operator=
|
assigns values
to the container
(public member function) |
assign
|
assigns values
to the container
(public member function) |
get_allocator
|
returns the
associated allocator
(public member function) |
Element access
|
|
front
|
access the
first element
(public member function) |
back
|
access the last
element
(public member function) |
Iterators
|
|
begin cbegin
|
returns an
iterator to the beginning
(public member function) |
end cend
|
returns an
iterator to the end
(public member function) |
rbegin crbegin
|
returns a
reverse iterator to the beginning
(public member function) |
rend crend
|
returns a
reverse iterator to the end
(public member function) |
Capacity
|
|
empty
|
checks whether
the container is empty
(public member function) |
size
|
returns the
number of elements
(public member function) |
max_size
|
returns the
maximum possible number of elements
(public member function) |
Modifiers
|
|
clear
|
clears the
contents
(public member function) |
insert
|
inserts
elements
(public member function) |
emplace
|
constructs
element in-place
(public member function) |
erase
|
erases elements
(public member function) |
push_back
|
adds an element
to the end
(public member function) |
emplace_back
|
constructs an
element in-place at the end
(public member function) |
pop_back
|
removes the
last element
(public member function) |
push_front
|
inserts an
element to the beginning
(public member function) |
emplace_front
|
constructs an
element in-place at the beginning
(public member function) |
pop_front
|
removes the
first element
(public member function) |
resize
|
changes the
number of elements stored
(public member function) |
swap
|
swaps the
contents
(public member function) |
Operations
|
|
merge
|
merges two
sorted lists
(public member function) |
splice
|
moves elements
from another list
(public member function) |
removeremove_if
|
removes
elements satisfying specific criteria
(public member function) |
reverse
|
reverses the
order of the elements
(public member function) |
unique
|
removes
consecutive duplicate elements
(public member function) |
sort
|
sorts the
elements
(public member function) |
Non-member functions
operator==operator!=operator<operator<=operator>operator>=
|
lexicographically
compares the values in the list
(function template) |
std::swap(std::list)
|
specializes the
std::swap algorithm
(function template) |
Example
Run this code
#include
<algorithm>
#include
<iostream>
#include
<list>
int
main()
{
// Create a list containing integers
std::list<int> l = { 7, 5, 16, 8 };
// Add an integer to the front of the list
l.push_front(25);
// Add an integer to the back of the list
l.push_back(13);
// Insert an integer before 16 by searching
auto it = std::find(l.begin(), l.end(), 16);
if (it != l.end()) {
l.insert(it, 42);
}
// Iterate and print values of the list
for (int n : l) {
std::cout << n << '\n';
}
}
Output:
25
7
5
42
16
8
13
Saturday, 4 March 2017
Quantum Computing Explanation
By ittaleem4u 11:52
basis, coherence, quantum, quantum coherence explanation, Quantum computing basis explanation, Quantum computing explanation, Quantum Computing principles of operation explanation, quantum principle No comments

Quantum computing
Quantum computing studies theoretical computation systems (quantum computers) that make direct use of mechanical Phenomena such as superposition and entanglement, to perform operations on data.
Quantum computers are different from binary
digital based on transistors. Whereas common digital computing
requires that the data be encoded into binary digits (bits),
each of which is always in one of two definite states (0 or 1), quantum
computation uses quantum bits,
which can be in super positions of states. A quantum Turing machine is a theoretical model of such a
computer, and is also known as the universal quantum computer. The field of
quantum computing was initiated by the work of Paul Ben
off and Yuri Manin in 1980, Richard Feynman in 1982,and David Deutsch in 1985.A quantum computer with
spins as quantum bits was also formulated for use as a quantum space–time in 1968.
![]() |
As of 2017, the development of actual quantum computers is still
in its infancy, but experiments have been carried out in which quantum
computational operations were executed on a very small number of quantum bits. Both
practical and theoretical research continues, and many national governments and
military agencies are funding quantum computing research in an effort to
develop quantum computers for civilian, business, trade,
environmental and national security purposes, such as cryptanalysis.
![]() |
Large-scale quantum computers would theoretically be able to solve
certain problems much quicker than any classical computers that use even the
best currently known algorithms,
like integer factorization using Shor's
algorithm or the simulation of quantum many-body systems.
There exist quantum algorithms,
such as Simon's algorithm, that run
faster than any possible probabilistic classical algorithm. A classical
computer could in principle (with exponential
resources) simulate a quantum algorithm, as quantum computation does not
violate the Church–Turing thesis. On the other hand, quantum computers
may be able to efficiently solve problems which are not practically feasible on classical computers.
Basis:
A classical computer has a memory made up of bits, where each bit is represented by either a
one or a zero. A quantum computer maintains a sequence of qubits. A single qubit can
represent a one, a zero, or any quantum
superposition of
those two qubit states; a pair of qubits can be in any
quantum superposition of 4 states, and three qubits in any superposition of 8
states. In general, a quantum computer with {\displaystyle n}qubits can be in an arbitrary
superposition of up to different states simultaneously (this compares to a
normal computer that can only be in one of these {\displaystyle 2^{n}}states at any one
time). A quantum computer operates by setting the qubits in a perfect drift
that represents the problem at hand and by manipulating those qubits with a
fixed sequence of quantum logic gates. The sequence of gates to be applied
is called a quantum
algorithm.
The calculation ends with a measurement, collapsing the system of qubits into
one of the {\displaystyle 2^{n}}pure
states, where each qubit is zero or one, decomposing into a classical state.
The outcome can therefore be at most {\displaystyle n}classical bits of information. Quantum algorithms
are often probabilistic, in that they provide the correct solution only with a
certain known probability. Note that the term non-deterministic computing must
not be used in that case to mean probabilistic (computing), because the term non-deterministic has a different meaning in
computer science.
![]() |
An example of an implementation of qubits of a
quantum computer could start with the use of particles with two spin states: "down" and
"up"{\displaystyle |1{\rangle
}}). But in fact any system possessing an observable quantity A, which is conserved under
time evolution such that A has at least two discrete and
sufficiently spaced consecutive Eigen values,
is a suitable candidate for implementing a qubit. This is true because any such
system can be mapped onto an effective spin-1/2 system.
A quantum computer with a given number of
qubits is fundamentally different from a classical computer composed of the
same number of classical bits. For example, representing the state of an n-qubit
system on a classical computer requires the storage of 2n complex coefficients, while to
characterize the state of a classical n-bit system it is sufficient
to provide the values of the n bits, that is, only n numbers.
Although this fact may seem to indicate that qubits can hold exponentially more
information than their classical counterparts, care must be taken not to
overlook the fact that the qubits are only in a probabilistic superposition of
all of their states. This means that when the final state of the qubits is
measured, they will only be found in one of the possible configurations they
were in before the measurement. It is in general incorrect to think of a system
of qubits as being in one particular state before the measurement, since the
fact that they were in a superposition of states before the measurement was
made directly affects the possible outcomes of the computation.
To better understand this point, consider a
classical computer that operates on a three-bit register. If the exact state of the register
at a given time is not known, it can be described as a probability distribution
over the {\displaystyle 2^{3}=8}different
three-bit strings 000, 001, 010, 011, 100, 101, 110, and 111. If
there is no uncertainty over its state, then it is in exactly one of these
states with probability 1. However, if it is a probabilisticcomputer,
then there is a possibility of it being in any one of a number
of different states.
Principles of operation:
A quantum computer with a given number of
qubits is fundamentally different from a classical computer composed of the
same number of classical bits. For example, representing the state of an n-qubit
system on a classical computer requires the storage of 2n complex coefficients, while to
characterize the state of a classical n-bit system it is sufficient
to provide the values of the n bits, that is, only n numbers.
Although this fact may seem to indicate that qubits can hold exponentially more
information than their classical counterparts, care must be taken not to
overlook the fact that the qubits are only in a probabilistic superposition of
all of their states. This means that when the final state of the qubits is
measured, they will only be found in one of the possible configurations they
were in before the measurement. It is in general incorrect to think of a system
of qubits as being in one particular state before the measurement, since the fact
that they were in a superposition of states before the measurement was made
directly affects the possible outcomes of the computation.
![]() |
To
better understand this point, consider a classical computer that operates on a
three-bit register. If the exact state of the register
at a given time is not known, it can be described as a probability distribution
over the {\displaystyle 2^{3}=8}different
three-bit strings 000, 001, 010, 011, 100, 101, 110, and 111. If
there is no uncertainty over its state, then it is in exactly one of these
states with probability 1. However, if it is a probabilistic computer, then there is a
possibility of it being in any one of a number of different
states.
Quantum Coherence:
There are
two formulations of mechanics: classical mechanics and quantum
mechanics. Classical mechanics was the formulation of the laws of
nature until 1900. After 1900, quantum mechanics was discovered/invented as a
way to explain numerous anomalies that couldn't be explained by classical
mechanics. It was quickly shown that many aspects of classical mechanics
could be derived from quantum mechanics.
Having quantum mechanics supersede classical mechanics is necessary to avoid the contradictions between the two frameworks.
The primary challenge was the transition from quantum realm where there are super positions of states (i.e. a particle can be "here and there", rather than only "here or there" as classical mechanics dictates). There were ad hoc rules that were created to make the transition from one realm to the other and the loose concept of "measurement" was introduced to dictate when a quantum system becomes classical. This led to many conceptual problems such as Schrodinger Cat.
It took a surprisingly long time to construct a non-ad hoc process to describe the change -- if you think about it, you could expect that the quantum realm and classical realm might not be a dichotomy, but instead something that can be interpolated between (i.e. a system might have lost part of its quantumness, but not all of it).
Having quantum mechanics supersede classical mechanics is necessary to avoid the contradictions between the two frameworks.
The primary challenge was the transition from quantum realm where there are super positions of states (i.e. a particle can be "here and there", rather than only "here or there" as classical mechanics dictates). There were ad hoc rules that were created to make the transition from one realm to the other and the loose concept of "measurement" was introduced to dictate when a quantum system becomes classical. This led to many conceptual problems such as Schrodinger Cat.
It took a surprisingly long time to construct a non-ad hoc process to describe the change -- if you think about it, you could expect that the quantum realm and classical realm might not be a dichotomy, but instead something that can be interpolated between (i.e. a system might have lost part of its quantumness, but not all of it).

Quantum decoherence is the physical process that describes this transition from the quantum realm to the classical realm. Somewhat shockingly, quantum decoherence follows directly from taking quantum mechanics itself seriously. No real, extension of quantum mechanics was necessary.
The details of quantum decoherence are as follows and are somewhat technical.
In quantum mechanics, a system is described by a state and if you have multiple independent components, you combine the states by concatenating the multiple states together.
To see quantum mechanical behavior, a system must separated into two different states and then be brought back together. I'll describe this as a process: Start in a state, split that state into two components (a coherent superposition), and bright the states back together
[math] |\Psi_1\rangle \rightarrow_{\text{split}} (|\Psi_1\rangle + |\Psi_2\rangle)/\sqrt {2} \rightarrow_{\text{combine}} |\Psi_1\rangle[/math]

The key realization is that you can't ignore the rest of the Universe. If the two parts of the quantum wave function interact with the rest of the Universe while they were apart, they change the Universe. If this happens, then when you try to bring the states back together, the Universe has changed (and you can't unchange the Universe simply, it's like unscrambling an egg).
Mathematically
[math] |\Psi_1\rangle|U\rangle[/math]
[math].\qquad\rightarrow_{\text{split}}[/math]
[math].\qquad\qquad (|\Psi_1\rangle|U\rangle + |\Psi_2\rangle |U'\rangle)/\sqrt{2} [/math]
[math].\qquad\rightarrow_{\text{combine}} [/math]
[math].\qquad\qquad(|\Psi_1\rangle|U\rangle+ |\Psi_1\rangle |U'\rangle)\sqrt{2}[/math].
Where the second part of the "state" is the rest of the Universe. Therefore, you can't observe quantum mechanical interference, the critical aspect that differentiates the quantum realm from the classical realm. The degree that the Universe has changed between the two halves of the wave function is the degree to which the quantumness has been lost. {\displaystyle |-\rangle ={\tfrac {1}{\sqrt {2}}}\left(1,-1\right)}














